getMethod()只可以访问共有方法 私有变量不能访问;
getDeclaredMethod() 可以访问获取私有(暴力破解)和公有变量的方法。
public class ReflectMethod {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
Class<?> boosClass = Class.forName("com.xiaotao.reflect.Boss");
Object boss = boosClass.newInstance();
//调用普通的hi方法
Method hi = boosClass.getMethod("hi", String.class);//只能访问公有的方法
//Method hi = boosClass.getDeclaredMethod("hi",String.class); //可以访问获取私有(暴力破解)和公有变量的方法
// hi.setAccessible(true);
hi.invoke(boss, "hello") ;
}
}
class Boss{
public int age;
private static String name;
public Boss(){
}
private static String say(int n, String s, char c){
return n + " " + s + " " + c;
}
public void hi(String s){
System.out.println("say:" + s);
}
}