Java反射机制中常用的类
(1)Class类:用于保存运行时信息的类,可以创建想要代表类的对象 1-1创建Class类的三种方法:
①使用Class类内部定义的一个static方法取得Class类对象(主要使用)Class.forName(“com.aprsource.reflect.demo.Cat”);
②使用”类.class”取得Cat.class
③通过Object类的getClass()方法即通过指定对象取得Cat cat = new Cat();cat.getClass()
1-2通过指定对象来获取类的信息
①获取类访问修饰符信息:classx.getModifiers()
②获取包名信息:classx.getPackage().getName()
③获取类名信息:classx.getName() 1-3通过Class对象获取构造方法
①获取所有的public修饰的构造方法classx.getConstructors()
②获取所有的的构造方法classx.getDeclaredConstructors()
③获取指定public修饰的构造方法classx.getConstructor(构造方法的参数类型信息)
④获取指定任意的构造方法classx.getDeclaredConstructor(构造方法的参数类型信息)
1-4通过Class对象获取普通方法
①获取所有的public修饰的普通方法classx.getMethods()
②获取所有的的普通方法classx.getDeclaredMethods()
③获取指定public修饰的普通方法classx.getMethod(方法名,方法的参数类型信息)
④获取指定任意的普通方法classx.getDeclaredMethod(方法名,方法的参数类型信息)
1-5通过Class对象获取属性字段
①获取所有的public修饰的属性字段classx.getFields()
②获取所有的属性字段classx.getDeclaredFields()
③获取指定public修饰的属性字段classx.getField(属性字段名) ④获取指定任意的属性字段classx.getDeclaredField(属性字段名)
(2)Constructor类:获取构造方法相关信息,其对象可以获取构造方法并调用构造方法 使用newInstance调用指定构造方法创建类的实例:constructor.newInstance(构造方法的参数值),Class类对象可以直接调用无参构造函数class.newInstance()
(3)Method类:获取普通方法相关信息
①通过方法对象完成普通方法的执行:method.invoke(方法的原属对象,方法的参数值)
②可以获取方法的访问修饰符、返回值类型、方法名、参数、参数列表
(4)Field类:通过反射机制获取类的属性
①为public修饰的属性字段赋值fieldNo.set(原始对象,属性值)
②为private修饰的属性字段赋值 首先设置访问权限:fieldPrice.setAccessible(true) 再为属性字段赋值fieldPrice.set(原始对象,属性值)
③可以获取属性的访问修饰符、数据类型、属性名
(5)Properties类:专门读取所有的.properties文件,其实例对象还可以调用load()方法来加载文件。pros.load(Class.class.getResourceAsSteam(“/.properties”))
(6)Package类:获取与包有关的信息