框架底层的类反射机制

来源:互联网 发布:mac下ie内核浏览器 编辑:程序博客网 时间:2024/05/22 05:22

1.反射:简单的说就是在运行时装配代码(运行时才加载),不需要在编译时进行代码代码链接。

2.使用反射时会在API中使用到的类:

Java.lang.Class

Java.lang.reflect.Constrctor

Java.lang.reflect.Method

Java.lang.reflect.Field

Java.lang.reflect.Modifier

3.作用:

(1)在Java中可以用于反编译,将.class文件反编译为.java文件,然后就可以访问Java对象中的属性和方法。

Class c = Class.forName("com.study.entity.Users");//反射读取Users实体类Object o = c.newInstance();//调用的就是无参构造函数//获取类中的属性名为age的属性Field f = c.getDeclaredField("age");//打破封装性给属性赋值f.setAccessible(true);f.set(o,20);//设置属性值System.out.println(f.get(o));//获取属性值

获取类所有属性:(包括修饰符 属性类型全称 属性名)

Field[] f1 = c.getDeclaredFields();
获取类所有函数:(包括修饰符 返回值类型全称 方法名)

Method[] ms = c.getDeclaredMethods();

(2)实际开发中常用反射去加载配置文件

Hibernate框架加载配置文件:

//创建Configuration对象Configuration cfg = new Configuration();//加载注册文件cfg.configure("hibernate.cfg.xml");

(3)使用反射加载属性文件

InputStream in = Object.class.getResourceAsStream("/mysql.properties");//使用反射加载属性文件并创建输入流对象Properties p = new Properties();//创建属性列表对象p.load(in);//从输入流读取属性列表System.out.println(p.getProperty("username").trim());


0 0