java学习之反射

定义

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制

获取class对象

//1.配置文件
Class cls1=Class.forName("constructor.Book");
System.out.println(cls1);
//2.参数传递
Class cls2=Book.class;
System.out.println(cls2);
//3.对象获得字节码文件
Book book=new Book();
Class cls3=book.getClass();
System.out.println(cls3);

获取变量

//getFields()获取公有变量
Field[] f=cls1.getFields();
for (Field field:f) {
	System.out.println(field);
}
//getField()获取指定公有变量
Field a=cls1.getField("a");
System.out.println(a);
Object value=a.get(book);
System.out.println("获取a值"+value);
a.set(book, 3);
value=a.get(book);
System.out.println("设置a值"+value);
    	
//getDeclaredFields()获取所有变量
Field[] declaredField=cls1.getDeclaredFields();
for (Field field:declaredField) {
	System.out.println(field);
}
Field name=cls1.getDeclaredField("name");
System.out.println(name);
name.setAccessible(true);//暴力反射(私有变量需设置忽略访问权限)
Object nvalue=name.get(book);
System.out.println("获取name值"+nvalue);
name.set(book, "history");
nvalue=name.get(book);
System.out.println("设置name值"+nvalue);

获取构造方法

//构造方法主要是创造对象
Constructor[] con=cls1.getConstructors();
for(Constructor c:con) {
    System.out.println(c);
}
Constructor c1=cls1.getConstructor(String.class);
Object b=c1.newInstance("chemistry");
System.out.println(b);
//如果传的是空参
Object b1=cls1.newInstance();
System.out.println(b1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值