importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.lang.reflect.Modifier;importclub.reflection.entity.User.User;/*** 反射实例 通过反射获取实体类中的属性方法
*@authorMr储
**/
public classRefDemo {public static voidmain(String[] args) {try{//获得Class对象()方法一通过Class静态方法forNmae();
Class cls1 = Class.forName("club.reflection.entity.User.User");//通过class属性
Class cls2 = User.class;//对象中通过Object类的getClass();
Class cls3 = (newUser()).getClass();
System.out.println(String.class);//通过Class的newInstance()获得对象的实例返回Object类型
Object obj =cls3.newInstance();//强制转换为User类型
User user =(User)obj;//System.out.println(cls3.getName());//club.reflection.instance.User获得类的完整名字//System.out.println(cls3.getConstructors());//获得构造方法
for(Field f : cls1.getDeclaredFields()){
System.out.println(f);
}
System.out.println("++++++++++");for(Field f : cls1.getFields()){
System.out.println(f);
}/*//初始化一个User对象
User u1 = new User("张三",18,"男");
//获取属性
u1.show();
showField(u1);
u1.show();//属性赋值后的比较
//获取方法
showMethods(u1);*/}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(InstantiationException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}
}/*** 获得类的属性*/
public static voidshowField(Object obj){try{//将obj转化为Class对象
Class cls =obj.getClass();
Field[] fields= cls.getDeclaredFields();//获得所有的属性
for(Field field : fields){
System.out.println(field.getName()+"\t"+field.getType().getName());//获取属性名和类型//改变访问权限(使可以赋值)
field.setAccessible(true);//给类中的属性赋值
if(field.getType().getName().equals("java.lang.String")){
field.set(obj,"名字");
}else if(field.getType().getName().equals("java.lang.Integer")){
field.set(obj,222);
}
}
}catch(SecurityException e) {
e.printStackTrace();
}catch(IllegalArgumentException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}
}/*** 获取方法*/
public static voidshowMethods(Object obj){
Class cls=obj.getClass();
Method[] methods= cls.getDeclaredMethods();//获取所有方法
for(Method m : methods){
System.out.println("方法:"+m);
System.out.println("方法名称:"+m.getName());
System.out.println("访问修饰符:"+Modifier.toString(m.getModifiers()));
System.out.println("返回值类型:"+m.getReturnType());//获得参类型
Class[] ClassParameters =m.getParameterTypes();for(Class c : ClassParameters){
System.out.println("参数类型:"+c.getName());
}
}try{//获得对象的方法
Method show1 = cls.getMethod("show");//执行方法
show1.invoke(obj);//获得对象的方法
/*** "show"要执行的方法名
* String.calss 方法参数的参数类型*/Method show2= cls.getMethod("show",String.class);//执行方法
show2.invoke(obj, "反射调用传参");
}catch(NoSuchMethodException e) {
e.printStackTrace();
}catch(SecurityException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}catch(IllegalArgumentException e) {
e.printStackTrace();
}catch(InvocationTargetException e) {
e.printStackTrace();
}
}
}
如何写反射 java java反射示例
转载文章标签 如何写反射 java java最简单反射实例 User System java 文章分类 Java 后端开发
-
Java反序列化-反射
java反序列化之-反射
java 反序列化 web安全 -
java反射示例
java反射代码示例程序
java 反射 -
Java反射机制示例
Java反射机制示例
Java开发 Java教程 -
java反射代码示例
一段java反射的代码示例
java 职场 示例 休闲 反射 -
django与LDAP集成的方法
django学习整理说明关于Django关于Office Automation1.创建并配置该项目Office Automation2.创建应用5.创建模板templates5.1在模板templates目录下创建index.html5.2向Django指明模板路径6.修改模型6.1更改model.py文件6.2创建数据库6.3更改setting.py6.4更改__init__.py7.Djan
django与LDAP集成的方法 python django web service web design