java反射机制java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。这种在运行时动态的获取信息以及动态调用对象的方法的功能称为 java 的反射机制。
class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 field,method,constructor 类 (每个类都实现了 member 接口)。这些类型的对象时由 jvm 在运行时创建的,用以表示未知类里对应的成员。这样你就可以使用 constructor 创建新的对象,用 get() 和 set() 方法读取和修改与 field 对象关联的字段,用invoke() 方法调用与 method 对象关联的方法。
另外,还可以调用 getfields() getmethods() 和getconstructors() 等很便利的方法,以返回表示字段,方法,以及构造器的对象的数组。这样匿名对象的信息
就能在运行时被完全确定下来,而在编译时不需要知道任何事情。
package com.microspringboot.readinglist.reflect;import java.lang.reflect.constructor;public class reflecttest { public static void main(string[] args) throws exception { class clazz = null; clazz = class.forname(com.microspringboot.readinglist.reflect.fruit); constructor<fruit> constructor1 = clazz.getconstructor(); constructor<fruit> constructor2 = clazz.getconstructor(string.class); fruit fruit1 = constructor1.newinstance(); fruit fruit2 = constructor2.newinstance(apple); }}class fruit { public fruit() { system.out.println(无参构造器 run...........); } public fruit(string type) { system.out.println(有参构造器 run........... + type); }}
运行结果: 无参构造器 run……….. 有参构造器 run………..apple
java获取反射的三种方法1.通过new对象实现反射机制
2.通过路径实现反射机制
3.通过类名实现反射机制
package com.microspringboot.readinglist.reflect;public class student { private int id; private string name; protected boolean sex; public float score;}
package com.microspringboot.readinglist.reflect;public class get { //获取反射机制三种方式 public static void main(string[] args) throws classnotfoundexception { //方式一(通过建立对象) student student = new student(); class stuclass1 = student.getclass(); system.out.println(stuclass1.getname()); //方式二(所在通过路径-相对路径) class stuclass2 = class.forname(com.microspringboot.readinglist.reflect.student); system.out.println(stuclass2.getname()); //方式三(通过类名) class stuclass3 = student.class; system.out.println(stuclass3.getname()); }}
以上就是java的反射机制是什么及怎么获取的详细内容。