获取Class对象
/1.获取Class对象
Class clz = Class.forName(“com.zhang.reflect.Student”);
//读取配置文件(动态创建调用)
//2.通过类名.class(加锁)
Class clz1 = Student.class;
//3.对象.getClass() (类的Class对象时唯一的)
Student stu = new Student();
Class clz2 = stu.getClass();
2 读取配置文件
//1.配置文件
//1.1 properties(属性文件 key,value)(Properties)
//1.2 xml文件 (标签)
//读取配置文件
Properties pros = new Properties();
//.properties -流 classloader.getResourceAsStream()
InputStream is = ReflectTest.class
.getClassLoader()
.getResourceAsStream(“fruit.properties”);
//加载key/value属性列表
pros.load(is);
//根据key获取value
String fruit = pros.getProperty(“fruit”);
is.close();
Person p = new Person();
Class clz = Class.forName(fruit);
//创建对象(调用无参构造)
Fruit f = (Fruit) clz.newInstance();
p.buy(f);
3 Field的使用
查看属性
/Field[] fields = clz.getFields();
for (Field field : fields) {
System.out.println(field.getName());
}/
/Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}/
//获取指定属性
/Field field = clz.getField(“no”);
System.out.println(field);/
/Field field = clz.getDeclaredField(“no”);
System.out.println(field);/
/FieldDemo demo = new FieldDemo();
demo.setNo(1);
System.out.println(demo.getNo());/
FieldDemo demo = new FieldDemo();
SetInt():设置基本类型的值
Set(obj,value):设置引用类型值
getInt(obj):获取基本类型的值
get(obj):获取引用类型的值
setAcceiable(true):设置访问权限
4 Method的使用
Class对象获取(封装了类中方法的信息)
获取method的对象
/Method[] methods = clz.getMethods();
for (Method method : methods) {
System.out.println(method);
}/
/Method[] declaredMethods = clz.getDeclaredMethods();
for (Method method : declaredMethods) {
System.out.println(method);
}/
/Method method = clz.getMethod(“setName”, String.class);
System.out.println(method);/
Method m2 = clz.getDeclaredMethod(“show”);
//执行方法(对象 参数)
m2.setAccessible(true);
m2.invoke(clz.newInstance());
5 Constructer使用
Constructor constructor =clz.getConstructor(String.class,int.class);
Stu stu = constructor.newInstance(“zs”,12);
System.out.println(stu);
/clz.getConstructors()
clz.getDeclaredConstructors()
clz.getDeclaredConstructor();/
反射机制概览
最新推荐文章于 2024-03-27 20:29:42 发布