A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2019-10-25 19:00  /  1567 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.反射的好处是什么?
2.什么时候会加载Class类对象?
3.获取Class类对象有几种方式?
4.为什么反射可以忽略泛型检查?

3 个回复

倒序浏览
1.反射的好处是什么?
反射提供给我们一个可以在运行期间动态地获取不同类对象的不同方法的方法,避免了当我们需要获取不同需求的时候去频繁地修改代码。将这些类对象和方法信息写入配置文件,只需要修改配置文件就可以完成不同的需求,是我们的程序更灵活有扩展性。

2.什么时候会加载Class类对象?
[1]创建对象
[2]加载子类会先加载它的父类,网上类推
[3]当运行的的测试类中有main方法的时候,测试类也会被加载
[4]调用一些静态的成员方法的时候,该成员方法所在的类对象会加载
[5]获取类对象产生的字节码文件文件会被加载,承位Class对象

3.获取Class类对象有几种方式?
三种:
[1]类名.Class
[2]对象.getClass  ->类对象已存在的情况下
[3]Class.forname("类的全路径") -> src下的 包名.包名....类名

4.为什么反射可以忽略泛型检查?
泛型的检查是由编译器来完成的,当我们还在编写阶段的时候,编译器会对泛型进行检查,而反射跳过了编写阶段直接到了获取类对象阶段,也就不会被编译器检查,称编译擦除。
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
反射优点:
a. 通过反射可以一定程度的解决代码的耦合问题
b. 通过反射可以让程序更加灵活
2.什么时候会加载Class类对象?
[1]创建对象
[2]加载子类会先加载它的父类,网上类推
[3]当运行的的测试类中有main方法的时候,测试类也会被加载
[4]调用一些静态的成员方法的时候,该成员方法所在的类对象会加载
[5]获取类对象产生的字节码文件文件会被加载,承位Class对象
3.获取Class类对象有几种方式?
三种:
[1]类名.Class
[2]对象.getClass  ->类对象已存在的情况下
[3]Class.forname("类的全路径") -> src下的 包名.包名....类名
4.为什么反射可以忽略泛型检查?
泛型的检查是由编译器来完成的,当我们还在编写阶段的时候,编译器会对泛型进行检查,
而反射跳过了编写阶段直接到了获取类对象阶段,也就不会被编译器检查,称编译擦除。
回复 使用道具 举报
1.反射的好处是什么?
1. 通过反射可以一定程度的解决代码的耦合问题
2. 通过反射可以让程序更加灵活

2.什么时候会加载Class类对象?
***java文件进行编译的时候就会加载class对象

3.获取Class类对象有几种方式?
***获取Class对象的3种方式
1类名.Class
2对象.getClass  ->类对象已存在的情况下
3Class.forname("类的全路径") -> src下的 包名.包名....类名

4.为什么反射可以忽略泛型检查?
因为java类,在编译时期会对泛型进行检查。但是当类被转化为字节码文件( .class)时候(运行时期,没有泛型),
泛型就被擦除了,也就没有了泛型检查。所以可以通过反射来越过泛型检查
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马