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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

15 个回复

倒序浏览
今日整理:
1.反射的好处是什么?

a、通过反射可以一定程度的解决代码的耦合问题
b、通过反射可以让程序更加灵活

2.什么时候会加载Class类对象?

实例化对象时
通过类名调用静态变量时

3.获取Class类对象有几种方式?

3种
Class clazz = Class.forName("类的全路径");//包名.类名 推荐使用
Class clazz = 类名.class;
Class clazz = 对象.getClass();//getClass();Object提供的方法


4.为什么反射可以忽略泛型检查?

java类,在编译时期会对泛型进行检查。
但是当类被转化为字节码文件(.class)时候(运行时期,没有泛型),泛型就被擦除了,也就没有了泛型检查
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
答:1. 通过反射可以一定程度的解决代码的耦合问题
2. 通过反射可以让程序更加灵活

2.什么时候会加载Class类对象?
答:初始化的过程
3.获取Class类对象有几种方式?
答:三种
-Class clazz = Class.forName("类的全路径");
- Class clazz = 类名.class;
- Class clazz = 对象.getClass();

4.为什么反射可以忽略泛型检查?
答:因为泛型的检查是在编译阶段进行的,而反射的使用都是跳过编译的,
没有编译阶段,直接使用编译后的字节码文件
回复 使用道具 举报
:
1.反射的好处是什么?
解决代码的耦合度问题  提高代码的灵活性
2.什么时候会加载Class类对象?
会在将class读入内存中的时候 创建一个java.lang.Class对象
3.获取Class类对象有几种方式?
通过类名.class获得   对象.getClass()获得  还有通过 Class.forname(路径名)获得
4.为什么反射可以忽略泛型检查?
因为泛型检查是在编译的时候有的  但是反射是在运行时进行的  运行时没有泛型检查 所以说反射可以越过泛型检查
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
答:
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里
例如:
……实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。
……使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要修改配置文件的"类描述"就可以了,不需要重新修改代码并编译。


2.什么时候会加载Class类对象?
答:
- 创建类的实例
- 调用类的类方法
- 访问类或者接口的类变量,或者为该类变量赋值
- 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
- 初始化某个类的子类
- 直接使用java.exe命令来运行某个主类


3.获取Class类对象有几种方式?
答:
共以下三种方式:
- 类名.class属性
- 对象名.getClass()方法
- Class.forName(全类名)方法


4.为什么反射可以忽略泛型检查?
答:
泛型的作用是把运行期异常提前到编译期,在编译期约束变量的类型,当程序运行后,虚拟机将对泛型进行擦除,而反射的作用是在运行期创建对象,所以反射可以忽略泛型检查

在java的泛型中,实际上只是编译器认识泛型,而虚拟机是不认识泛型的。简单来讲,在运行时,所有的泛型都是object
回复 使用道具 举报
1.反射的好处是什么?
可以一定程度的解决代码的偶和问题,使程序变的更加灵活
2.什么时候会加载Class类对象?
(1)创建对象时;
(2)调用类的方法时;
(3)访问类或者接口的类变量,或者为类变量赋值
(4)使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
(5)初始化每个类的子类时;
(6)直接使用java.exe命令来运行某个主类时
3.获取Class类对象有几种方式?
(1)类名.Class
(2)对象.getClass  ->类对象已存在的情况下
(3)Class.forname("类的全路径")
4.为什么反射可以忽略泛型检查?
因为泛型的检查是由编译器来完成的,当编写代码时,编译器就会对泛型进行检查,而反射跳过了编写阶段
直接到获取类对象的阶段,也就不会被编译器检查。
回复 使用道具 举报
##### 今日整理:
#### 1.反射的好处是什么?
-- 反射的好处是提高了代码的灵活性和扩展性,降低代码的耦合度
#### 2.什么时候会加载Class类对象?
-- 1. 实例化对象
-- 2.通过类名调用静态变量(类名.class除外)
#### 3.获取Class类对象有几种方式?
-- 通过对象的getClass方法获取。这种方法需要具体的类和该类的对象,以及调用getClass方法
-- 任何数据类型都具备一个静态的属性class,通过该属性可以直接获取到该类型对应的class对象
-- 通过Class.forName()方法获取,使用全类名
#### 4.为什么反射可以忽略泛型检查?
-- 在java的泛型中,实际上只是编译器认识泛型,而虚拟机是不认识泛型的。简单来讲,在运行时,所有的泛型都是object
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
1. 通过反射可以一定程度的解决代码的耦合问题
2. 通过反射可以让程序更加灵活
2.什么时候会加载Class类对象?
通过类名调用静态变量的时候
3.获取Class类对象有几种方式?
- Class clazz = Class.forName("类的全路径");//包名.类名 推荐使用
- Class clazz = 类名.class;
- Class clazz = 对象.getClass();//getClass();Object提供的方法
4.为什么反射可以忽略泛型检查?
因为java类,在编译时期会对泛型进行检查。但是当类被转化为字节码文件( .class)时候(运行时期,没有泛型),泛型就被擦除了,也就没有了泛型检查。所以可以可以忽略泛型检查。
回复 使用道具 举报
蔡奕 初级黑马 2020-2-20 20:37:00
9#
1.
   可以一定程度的解决代码的偶和问题
   使程序变的更加灵活
2.
  (1).实例化对象时,就像spring管理的bean一样,在tomcat启动时就实例化了bean,那么这个对象bean的类就加载了
  (2).通过类名调用静态变量的时候(类名.class除外)
3.
   (1)类名.Class
   (2)对象.getClass  
   (3)Class.forname("类的全路径")
4.
因为java类,在编译时期会对泛型进行检查。但是当类被转化为字节码文件( .class)时候(运行时期,没有泛型),泛型就被擦除了,也就没有了泛型检查。所以可以通过反射来越过泛型检查
回复 使用道具 举报
1.反射的好处是什么?
   可以在一定程度上解决代码的耦合度问题
   反射可以使写的程序更加灵活

2.什么时候会加载Class类对象?
     Class.forName(“类名”);

3.获取Class类对象有几种方式?
Class c = Class.forName(“类名”);
Class c =类名.Class;
Class c =对象.getClass();


4.为什么反射可以忽略泛型检查?

        泛型的检查一般是在编译阶段执行的,但是反射的使用都是跳过编译,没有编译阶段的,直接使用编译后的字节码文件也就是   .class  文件
回复 使用道具 举报

今日整理:
1.反射的好处是什么?
通过反射可以一定程度的解决代码的耦合问题
通过反射可以让程序更加灵活

2.什么时候会加载Class类对象?
加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象
类的初始化时机为:
    创建类的实例
    调用类的类方法
    访问类或者接口的类变量,或者为该类变量赋值
    使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
    初始化某个类的子类
    直接使用java.exe命令来运行某个主类

3.获取Class类对象有几种方式?
    Class.forName(全类名)方法:Class clazz = Class.forName("类的全路径");//包名.类名 推荐使用
    类名.class属性:Class clazz = 类名.class;
    对象名.getClass()方法:Class clazz = 对象.getClass();//getClass();Object提供的方法

4.为什么反射可以忽略泛型检查?
    因为泛型的检查是在编译阶段进行的,而反射的使用都是跳过编译的,没有编译阶段,直接使用编译后的字节码文件
回复 使用道具 举报

今日整理:
1.反射的好处是什么?

        弱化耦合,提高代码的灵活性。

2.什么时候会加载Class类对象?

        当前类找到了对应的类加载器,那么这个类以及它的依赖以及引用类都会被找到的类加载器加载

3.获取Class类对象有几种方式?

        有三种方式
        方式一:使用Class类的静态方法,参数是路径
        方式二:使用类名.class
        方式三:使用对象.getClass方法,此方法是Object类提供的

4.为什么反射可以忽略泛型检查?

        因为反射可以访问到原始方法的参数类型,所以可以调用原始方法的参数类型操作。
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
***1. 通过反射可以一定程度的解决代码的耦合问题
***2. 通过反射可以让程序更加灵活

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

3.获取Class类对象有几种方式?
***获取Class对象的3种方式
- Class clazz = Class.forName("类的全路径");//包名.类名 推荐使用
- Class clazz = 类名.class;
- Class clazz = 对象.getClass();//getClass();Object提供的方法

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

1.反射的好处是什么?
我们是不需要将程序停下来,只需要修改配置文件里面的信息就可以了。

2.什么时候会加载Class类对象?
   创建对象时;
   调用类的方法时;
    访问类或者接口的类变量,或者为类变量赋值
    使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
   初始化每个类的子类时;
   直接使用java.exe命令来运行某个主类时

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

4.为什么反射可以忽略泛型检查?
在java的泛型中,实际上只是编译器认识泛型,而虚拟机是不认识泛型的。简单来讲,在运行时,所有的泛型都是object
回复 使用道具 举报
今日整理:
1.反射的好处是什么?
①一定程度解决耦合
②让程序更灵活
2.什么时候会加载Class类对象?
通过类加载器加载到jvm虚拟机
3.获取Class类对象有几种方式?
①Class.forName("类的全路径")
②类名.class
③对象名.getClass()
4.为什么反射可以忽略泛型检查?
因为代码运行后,虚拟机有个擦除泛型的操作,反射是直接获取了对象跳过了编译器检查,就可以忽略编译器检查
回复 使用道具 举报
1.反射的好处是什么?
   通过反射可以一定程度的解决代码的耦合问题;
   通过反射可以让程序更加灵活。
2.什么时候会加载Class类对象?
   创建类的实例;
   调用类的类方法;
   访问类或者接口的类变量,或者为该类变量赋值;
   使用反射方式来强制创建某个类或接口对应的class对象;
   初始化某个类的子类;
   直接使用 java.exe命令来运行某个主类。
3.获取Class类对象有几种方式?
   Class clazz = Class.forName("类的全路径");
   Class clazz = 类名.class;
   Class clazz = 对象.getClass();
4.为什么反射可以忽略泛型检查?
   泛型的检查是由编译器来完成的,当我们还在编写阶段的时候,编译器会对泛型进行检查,
   而反射跳过了编写阶段直接到了获取类对象阶段,也就不会被编译器检查。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马