Class clazz = Class.forName("com.test.zzz.Person");
//获取clazz对应类中的所有方法,不能获取private方法,且获取从父类继承来的所有方法
Method[] methods = clazz.getMethods();
for(Method method:methods){
System.out.print(" "+method.getName()+"()");
}
System.out.println("---------------------------");
//获取所有方法,包括私有方法,所有声明的方法,都可以获取到,且只获取当前类的方法
methods = clazz.getDeclaredMethods();
for(Method method:methods){
System.out.print(" "+method.getName()+"()");
}
//获取指定的方法需要参数名称和参数列表,无参则不需要写方法
Method method = clazz.getDeclaredMethod("setName", String.class);
System.out.println(method);
注意:方法 public void setAge(int age) { }
这样写是获取不到的,如果方法的参数类型是int型
如果方法用于反射,那么要么int类型写成Integer: public void setAge(Integer age) { }
要么获取方法的参数写成int.class
method = clazz.getDeclaredMethod("setAge", int.class);
System.out.println(method);
//执行方法,第一个参数表示执行哪个对象的方法剩下的参数是执行方法时需要传入的参数
Object obje = clazz.newInstance();
method.invoke(obje,18);文章来源:https://www.toymoban.com/news/detail-609974.html
//私有方法的执行,必须在调用invoke之前加上一句method.setAccessible(true);
method = clazz.getDeclaredMethod("privateMethod");
System.out.println(method);
System.out.println("---------------------------");
System.out.println("执行私有方法");
method.setAccessible(true);
method.invoke(obje);文章来源地址https://www.toymoban.com/news/detail-609974.html
到了这里,关于反射相关方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!