反射机制用来探查java对象得属性
获取Class的3种方法
package reflection;
public class Testreflection {
public static void main(String[] args) {
Object person = new Person("xiaoming",22);
Class c1 = person.getClass(); //获得class方法得第一种方法
System.out.println(c1.getName());//reflection.Person
System.out.println(c1.getClass().getName()); //java.lang.Class
Class c2 = Person.class; //获取class对象得第二种方法 T.class,T为任意得java关键字
System.out.println(c2.getName());//reflection.Person
Class c3 = int.class;
System.out.println(c3.getName()); //int
String className = "java.lang.String";
try {
Class c4 = Class.forName(className);
System.out.println(c4.getName()); //获取Class得第三种方法
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Person{
private String name;
private int age;
public Person() {
this.name = "sample";
this.age = 0;
}
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
利用Class创建一个类
try {
Person p1 = (Person) c1.newInstance();
System.out.println(p1.getName()); //sample
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
利用反射分析类的能力