public class Main{
public static void main(String[] args){
Person person=new Person(1024,"小明");
Class c1=person.getClass();
try{
Method m=c1.getDclaredMethod("showAll",null);
m.setAccessible(true);
m.invoke(person,null);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}catch(NoSuchMethodException e){
e.printStackTrace();
}
}
}
class Person{
private int id;
private String name;
public Person(){}
public Person(int id,String name){
this.id=id;
this.name=name;
}
private void showAll(){
System.out.println(this.name+"'s id is"+this.id);
}
}
同样先得到person对象的类的Class对象,然后通过getDeclaredMethod(“showAll”,null)方法获取到showAll()方法,第一个参数是方法名称,第二个参数是所要获取方法的参数类型列表,然后把m的可访问权限设置为true,最后通过invoke(person,null),调用方法,invoke()第一个参数是所要调用方法的对象,第二个参数是传入所要调用方法的参数,这里showAll()没有参数,所以为null.