Java反射机制(初步认识)
【摘要】
反射的实质:
就是在得到Class对象之后,反向获取Class对象的对象。 解读:Class的对象好比一个类,反向获取Class对象(也就是类)的对象。 其中类字面常量反射,通过把xxx.class字节...
反射的实质:
就是在得到Class对象之后,反向获取Class对象的对象。
解读:Class的对象好比一个类,反向获取Class对象(也就是类)的对象。
其中类字面常量反射,通过把xxx.class字节码文件反射回去生成编译前的类。
不清楚Class类的可以点击查看本人另一篇博文:Class与class的区别
对Class类解读:
我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。
也可以认为对象是类的实例,类是Class的实例。
运用反射机制:
在获得Class对象后我们可以调用:
Class对象.getDeclaredConstructor().newInstance()
方法去获取Class对象的对象
例子:
package Task;
import org.junit.Test;
public class Try0 {
@Test
public void toTry() throws Exception {
//forName方法:参数为其类的路径
Class a = Class.forName("Task.Try1");
System.out.println(a);
//通过对象得到类
Try1 try1 = new Try1();
Class b = try1.getClass();
System.out.println(b);
//类字面常量,通过把xxx.class字节码文件反射回去生成编译前的类
Class c = Try1.class;
System.out.println(c);
//JAVA9之后废弃newInstance()方法
//反射机制,用Class的对象a(Try1类型) 生成了Try1的对象try2,并且调用了try2的toPrint方法。
Try1 try2 = (Try1) a.getDeclaredConstructor().newInstance();
System.out.println(try2+try2.toPrint());
//反射机制,用Class的对象b(Try1类型) 生成了Try1的对象try3,并且调用了try3的toPrint方法。
Try1 try3 = (Try1) b.getDeclaredConstructor().newInstance();
System.out.println(try3+try3.toPrint());
//反射机制,用Class的对象c(Try1类型) 生成了Try1的对象try4,并且调用了try4的toPrint方法。
Try1 try4 = (Try1) c.getDeclaredConstructor().newInstance();
System.out.println(try4+try4.toPrint());
}
}
class Try1 {
public String toPrint(){
return "调用了toPrint";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
输出结果:
可以看到生成了不同的Try1对象,和new出来的对象一样,可以使用对象的方法等等。
文章来源: blog.csdn.net,作者:Mr.Yushiwen,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/MrYushiwen/article/details/107380536
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)