反射笔记

反射:
运行时,操作类中的属性,方法,构造器…

一,得到类对象

1:通过对象反射类

Class c = 对象.getClass();

2:通过类名

Class c = 类名.class

3:通过类的全路径

Class c = Class.forName(“类路径”);

二:类对象作用

1:实例化类

c.newInstance();–调用默认构造方法(注意没有默认构造方法的时候,会抛出异常)

2:获取构造器(做对象的)

Constructor constructor = c.getConstructor(构造器的参数…);

Object obj = constructor.newInstance(实际参数) obj就是类的实例

3:获取属性:

Field f = c.getDeclaredField(“属性名”);

f.set(对象,值)–设置属性的值

f.get(对象)–获取属性的值

注意: 如果属性是private ,还想set和get话,需要调用f.setAccessible(true);

4:获取方法:

Method method = c.getDeclaredMethod(“方法名”,参数类对象…);

方法调用 method.invoke(对象,参数数)

5:批量操作

1)所有的属性
Field[] fs = c.getDeclaredFields();

for(Field f : fs) {
System.out.println(f.getName());
}

2)所有方法
Method[] ms = c.getDeclaredMethods();

for(Method m : ms ) {
System.out.println(m.getName());
}
3)所有构造器
Constructor[] cs = c.getConstructors();

for(Constructor cc: cs) {
System.out.println(cc.getParameters().length);
}

4)得到方法或者是构造方法的参数(Eclipse 需要设置下,才能获取到参数名字)

for(Method m : ms ) {
System.out.println(m.getName());
System.out.println(“参数:”);
Parameter[] ps = m.getParameters();
for(Parameter p : ps) {
System.out.println(p.getName());
System.out.println(p.getType());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值