JAVA中的反射机制主要是在运行时环境动态获取类中的方法或者属性。
JAVA反射机制主要提供了以下功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)
Example:
package Reflect;
class Student {
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public Student() {
}
private int id;
private String name;
public int getID() {
return id;
}
public void setID(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "[" + this.id + " " + this.name + "]";
}
}
public class Hello {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class student = Class.forName("Reflect.Student");
Student demo = (Student) student.newInstance();
Student demo2 = (Student) student.newInstance();
demo.setID(51823);
demo.setName("jim");
System.out.println(demo.toString());
System.out.println(demo == demo2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过反射机制可以直接获取类的对象,然后操作其中的方法。有一点请注意:调用newInstance()的时候,反射类中必须有无参构造函数。