package star.july.reflect;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.junit.Test;
import star.july.entity.Student;
//反射类方法
public class ClassReflect {
@Test
public void test1() throws Exception{
//方法一:
// Class clazz = Student.class;
// System.out.println(clazz);
//方法二:
// Class clazz = new Student().getClass();
// System.out.println(clazz);
//方法三(推荐使用,耦合性低)
Class stuCla = Class.forName("star.july.entity.Student");
System.out.println(stuCla);
}
@Test
public void test2() throws Exception{
Class stuCla = Class.forName("star.july.entity.Student");
//获得类的名称
String name = stuCla.getName();
// System.out.println(name); //输出:star.july.entity.Student
//获得类的简称
String simpleName = stuCla.getSimpleName();
// System.out.println(simpleName); //输出:Student
//得到当前类继承的普通父类
Class superclass = stuCla.getSuperclass();
// System.out.println(superclass); //输出:class star.july.entity.Person
//得到当前类继承的泛型父类
Type genericSuperclass = stuCla.getGenericSuperclass();
// System.out.println(genericSuperclass); //输出:star.july.entity.Person<star.july.entity.Cat>
ParameterizedType pt = (ParameterizedType)genericSuperclass;
//得到参数类型中的具体的泛型
Type[] ata = pt.getActualTypeArguments();
System.out.println(ata[0]); //输出:star.july.entity.Cat
//得到当前类的所有普通接口
Class[] interfaces = stuCla.getInterfaces();
Class if1 = interfaces[0];
// System.out.println(if1); //输出:interface java.io.Serializable
//得到当前类的所有泛型接口
Type[] types = stuCla.getGenericInterfaces();
// System.out.println(types);
}
}
Student类:
package star.july.entity;
import java.io.Serializable;
public class Student extends Person<Cat> implements Serializable{
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student( int age) {
super();
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}