关于java的反射机制,前人已经总结的很多,对于在工作中遇到的问题在这做个小总结
public class Method1 {
publi int test(int a) {
return a;
}
private String testObject(String name) {
return "Hello:"+name;
}
}
import java.lang.reflect.Method;
public class MethodReflect {
public static void main(String[] args) {
Class<?> clazz=Method1.class;
try {
Method method = clazz.getMethod("test",new Class[]{int.class});
//method.setAccessible(true);
Object obj = method.invoke(new Method1(), new Object[]{100});
System.out.println(obj);
Method method2=clazz.getDeclaredMethod("testObject", new Class[]{String.class});
method2.setAccessible(true);
Object a = method2.invoke(clazz.newInstance(),new Object[]{"alllan"});
System.out.println(a);
} catch (Exception e) {
e.printStackTrace();
}
}
可见getMethod和getDeclaredMethod区别: getMethod返回的是申明为public的属性,包括父类中定义, getDeclaredMethod返回的是指定类定义的所有定义的属性,不包括父类的