反射

一、反射

反射在这里的意思是,通过 .class 文件获取实体类中的数据


二、如何得到类对象
   <1>类名.class
   <2>对象.getClass()
   <3>Class.forName("全限定名");
   <4>类加载的loadClass("全限定名");
   <5>子类.class.getSuperClass();
   <6>包装类.class


三、根据类得到类名(全限定名)
c.getName()------------>全限定名
c.getSimpleName() ---->类名
c.getPackage()---------->包名


四、根据类得到类的属性
c.getField("field属性名");
属性名:f.getName()
属性修饰符:f.getModifiers()
属性的数据类型:f.getType().getName()
给属性设值:f.set()
得到属性的值:f.get()


得到私有的属性:f.getDeclaredField("属性名");


得到所有的声明的属性
c.getDeclaredFields()


五、根据类得到类的方法
c.getMethod()
c.getDeclaredMethod();



六、根据类得到类的构造方法

/**
* 获取该类所有的构造方法,并执行
*/
@Test
public void test5(){
Class clazz=Person.class;
Constructor constructor[]=clazz.getDeclaredConstructors();
for (Constructor c : constructor) {
System.out.println(c.getModifiers());
Class clazzType[]=c.getParameterTypes();
for (Class cc : clazzType) {
System.out.println(" "+cc.getSimpleName());
}
}
//调用构造方法(使用构造方法进行实例化对象)
try {
//clazz.newInstance();//调用无参构造
//调用有参构造
Constructor constru=clazz.getDeclaredConstructor(Integer.class,String.class,Integer.class);
constru.newInstance(1,"123",2);
} catch (Exception e) {
e.printStackTrace();

}



七、根据类得到类的实现接口列表

/**
* 获取实现该类的所有接口 及 父类
*/
@Test
public void test6(){
Class clazz=Person.class;
System.out.println(clazz.getSuperclass().getSimpleName());
//实现的接口
Class clazzInterface[]=clazz.getInterfaces();
for (Class c : clazzInterface) {
System.out.println(c.getSimpleName());
}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值