反射机制详解❤❤❤

1.什么是反射机制?

反射机制是java语言中通过动态获取类,然后对类进行操作的一种机制。通常来说,一般创建对象的方式是new直接实例化对象(正射),而还有一种方式就是通过java提供的反射机制来实现。通过反射机制可以操作字节码文件。

2.反射机制常用的类有哪些?

①java.lang.Class
②java.lang.reflect.Method
③java.lang.reflect.Constructor
④java.lang.reflect.Field
※反射机制是用来操作字节码的。这些类就是字节码相关的类。①是某类的字节码类,比如说Student类的字节码Student.class,就可以用①来抽象。②代表类中方法的字节码。③④同理。

3.获取Class的三种方法是什么?

①Class.forName(“完整类名”);
※执行此行代码会导致类加载,静态代码块执行
②A类.class
※java中的任何一种类型都有这个属性
③A类的对象.getClass()
※java中任何一个对象都有这个方法

4.通过反射机制创建对象有什么好处?

通过反射机制创建对象比较灵活。

5.怎么通过反射机制获取类的属性,方法?

①获取类的属性

 Class clazz = Class.forName("com.bhh.reflect.Student");
 //获取类中的public属性
 Field field[] = clazz.getFields();
 for(int i = 0;i<field.length;i++){
     Field fieldFor = field[i];
     System.out.println(fieldFor.getName());
 }
 //获取类中的全部属性
 Field field1[] = clazz.getDeclaredFields();
 for(int i = 0;i<field1.length;i++){
     Field fieldFor = field1[i];
     System.out.println(fieldFor.getName());
 }

②获取类的方法

Class clazz = Class.forName("com.bhh.reflect.Student");
Method method = clazz.getDeclaredMethod("study",String.class);
System.out.println(method.getName());

6.怎么通过反射机制获取对象的属性,方法?

①设置对象的属性

Class clazz = Class.forName("com.bhh.reflect.Student");
//创建对象
Object obj = clazz.newInstance();
//给对象赋值
Field field = clazz.getDeclaredField("no");
field.setAccessible(true);
field.set(obj,"100");

②调用对象的方法

Class clazz = Class.forName("com.bhh.reflect.Student");
Object obj = clazz.newInstance();
Method method = clazz.getDeclaredMethod("study",String.class);
method.setAccessible(true);
method.invoke(obj,"Tony");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值