反射机制概览

获取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();
/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值