美文网首页
反射(方法)

反射(方法)

作者: 心旋律 | 来源:发表于2018-01-13 17:07 被阅读0次

加载对应类的字节码文件,获取该类的Class类对象

Class cls = Class.forName("com.qfedu.a_reflect.Person");

获取所有的公共的方法

Method[] allPublicMethods = cls.getMethods();

for (Method method : allPublicMethods) {

System.out.println(method);

}

//暴力反射

//能够获取Person里面的private方法, 并且能够过滤掉从父类继承而来的方法

Method[] allMethods = cls.getDeclaredMethods();

for (Method method : allMethods) {

System.out.println(method);

}

通过反射机制,执行类中的成员方法

invoke(Object obj, Object... args);

Object obj 这是底层调用该方法的类对象

the object the underlying method is invoked from

Object... args 不定参数,是执行该放的参数列表,是Object类型

args is arguments used for method call

//向利用反射,创建一个当前类的对那个

Person p = (Person) cls.getConstructor(int.class, String.class).

newInstance(1, "狗蛋");

//获取一个指定的方法,需要的参数是方法的名字字符串和参数列表,

Method aPublicMethod = cls.getMethod("sleep", int.class);

System.out.println("49" + aPublicMethod);

aPublicMethod.invoke(p, 15);

//获取一个静态方法

Method aPublicStaticMethod = cls.getMethod("eat", null);

aPublicStaticMethod.invoke(null, null);

//利用暴力反射获取一个私有化的成员方法

Method aPrivateMethod = cls.getDeclaredMethod("testPrivate", null);

aPrivateMethod.setAccessible(true);

aPrivateMethod.invoke(p, null);

相关文章

网友评论

      本文标题:反射(方法)

      本文链接:https://www.haomeiwen.com/subject/adncoxtx.html