Java Reflect

JAVA反射机制是在运行状态中,对于任意一个,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
 
性能问题:用代码生成代替反射
 
Java Reflect - DaySpring - DaySpring
Java Reflect - DaySpring - DaySpring
Java Reflect - DaySpring - DaySpring
  
具体方法:
Class<?> clazz = obj.getClass();
Method method = clazz.getMethod("say", String.class, Integer.TYPE);
method.invoke(obj, "hello", 1); 
 
setter&&getter方法:
Field[] fields = clazz.getDeclaredFields();
 
for(Field f : fields){
 
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz);
Method m = pd.getReadMethod();
System.out.println(m.invoke(obj));
}
 
for(Field f : fields){
 
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz);
String typeName = pd.getReadMethod().getReturnType().getSimpleName();
Method m = pd.getWriteMethod();
 
if("int".equals(typeName)){
m.invoke(obj, 100);
}else if("String".equals(typeName)){
m.invoke(obj, "newStr");
}
}

 

posted on 2018-08-29 15:34  xiaowater  阅读(142)  评论(0)    收藏  举报

导航