网站建设手稿,王也夫,类似开发次元世界,靖江网站目录
什么是反射#xff1f;
反射如何获取类信息#xff1f;
小结#xff1a; 什么是反射#xff1f; 反射是用代码分析类信息的能力
类中有哪些信息#xff1a;方法、对象、构造器、全局变量、父类、接口等....
反射如何获取类信息#xff1f;
三种方式 1.通过对象…目录
什么是反射
反射如何获取类信息
小结 什么是反射 反射是用代码分析类信息的能力
类中有哪些信息方法、对象、构造器、全局变量、父类、接口等....
反射如何获取类信息
三种方式 1.通过对象的getClass方法进行获取 2.通过Class.forName()方法获取 3.通过静态属性class可直接获取到该类型对应的Class对象 例如T.class 将代表匹配的类对象 面试题反射能不能通过反射访问类的私有信息 可以 将下面代码设置成true 这种方式为暴力反射写个demo演示一下
获取全局变量信息的方式 Filed
public class Reflection {private String name;Overridepublic String toString() {return reflection{ name name \ };}
}
class violence{public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {Reflection reflection new Reflection();Field name Reflection.class.getDeclaredField(name);name.set(reflection,小黑子);System.out.println(reflection);}
} name.setAccessible(true); 不加这行代码时运行结果 报错显示 无法直接访问private修饰的私有成员name属性
Exception in thread main java.lang.IllegalAccessException:
Class com.qcby.test.demo.violence can not access a member of class
com.qcby.test.demo.Reflection with modifiers private
添加后就能够访问name属性了 小结
反射获取类的全局变量 1. 类对象.getDeclaredFields() 获取所有的全局变量 需要使用Filed[]接收 2. 类对象.getFields() 获取所有的public修饰的全局变量 需要使用Filed[]接收 3. 类对象.getDeclaredField(“变量名”) 能够获取指定的任何修饰符修饰的全局变量信息 需要使用Filed接收 4. 类对象.getField(“变量名”) 能够获取指定的public修饰符修饰的全局变量信息 需要使用Filed接收 返回获取方法 Method
public class Reflection {private String name;private void setName(String name) {this.name name;}Overridepublic String toString() {return reflection{ name name \ };}
}
class violence{public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {Reflection reflection new Reflection();
// Field name Reflection.class.getDeclaredField(name);
// name.setAccessible(true);
// name.set(reflection,小黑子);Method setName Reflection.class.getDeclaredMethod(setName, String.class);setName.setAccessible(true);setName.invoke(reflection,cxk);System.out.println(reflection);}
}小结
获取类的方法的方式 1. 类对象.getDeclaredMethods() : 这种方式 获取所有的 方法信息 Method[] 2. 类对象.getMethods() 这种方式 获取public修饰的 方法信息 Method[] 3. 类对象.getDeclaredMethod(方法名,所有参数的类型) 获取所有的指定的方法信息 Method 4. 类对象.getMethod(方法名,所有参数的类型) 获取public的指定的方法信息 Method 以上是个人对反射学习后的总结希望对你有帮助不足请补充