0
点赞
收藏
分享

微信扫一扫

Javase 反射机制

扒皮狼 2022-02-05 阅读 55
java

一、反射机制概念

(1)反射机制有什么用?
        通过java语言中的反射机制可以操作字节码文件
        通过反射机制可以操作代码片段。(class文件。)

(2)反射机制的相关类在哪个包下?
        java.lang.reflect.*;

(3)反射机制相关的重要的类有哪些?
        java.lang.Class:代表整个字节码,代表一个类型,代表整个
        java.lang.reflect.Method:代表字节码中的方法字节码。代表类中的方法
        java.lang.reflect.Constructor:代表字节码中的构造方法字节码。代表类中的构造方法
        java.lang.reflect.Field:代表字节码中的属性字节码。代表类中的成员变量

二、反射机制语法

(1)在java中获取Class的三种方式

第一种:     
Class c = Class.forName("完整类名");
第二种:
Class c = 对象.getClass();
第三种:
Class c = int.class;
Class c = String.class;

(2)获取了Class之后,可以调用无参数构造方法来实例化对象

//c代表的就是日期Date类型
Class c = Class.forName("java.util.Date");
//实例化一个Date日期类型的对象
Object obj = c.newInstance();

一定要注意
        newInstance()底层调用的是该类型的无参数构造方法
        如果没有这个无参数构造方法会出现"实例化"异常。
联想:如果只是想让一个类的静态代码块执行的话可以怎么做?
        可以调用Class.forName();,因为这个方法可以导致类加载。

三、关于路劲问题

1)通过相对路径找绝对路径

String path = Thread.currentThread().getContextClassLoader()
.getResource("相对路径").getPath();

这种方式是为了获取一个文件的绝对路径。(通用方式,不会受到环境移植的影响。)
        但是该文件要求放在类路径下,换句话说:也就是放到src下面。
        src下是类的根路径。

直接以流的形式返回:(也是需要放到类路径中)

InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("相对路径");

(2)IO + Properties,怎么快速绑定属性资源文件?

ResourceBundle bundle = ResourceBundle.getBundle("相对路径文件"); 
String value = bundle.getString(key);

要求:这个文件必须在类路径下
          这个文件必须是以.properties结尾。
          不可以使用文件后缀

四、反射机制需要掌握什么?

自用小总结、方便复习。

举报

相关推荐

0 条评论