通过Class类取得完整结构
1 package com.fwj.classdemo; 2 3 public interface IStudent { 4 5 public static final String AUTHOR = "fwj"; 6 public String getInfo(); 7 public void sayHello(); 8 9 }
1 package com.fwj.classdemo; 2 3 public class Person implements IStudent{ 4 5 private String name; 6 private int age; 7 8 public Person(String name, int age) { 9 super(); 10 this.name = name; 11 this.age = age; 12 } 13 14 public Person() { 15 super(); 16 } 17 18 public Person(String name) { 19 super(); 20 this.name = name; 21 } 22 省略getter和setter。。。。 23 @Override 24 public String toString() { 25 return "Person [name=" + name + ", age=" + age + "]"; 26 } 27 28 @Override 29 public String getInfo() { 30 // TODO Auto-generated method stub 31 return AUTHOR + name + age; 32 } 33 34 @Override 35 public void sayHello() { 36 // TODO Auto-generated method stub 37 System.out.println("hello world!!!"); 38 } 39 }
取得继承的父类
在Class中存在以下方法,可以取得一个类继承的父类
public Class<? super T> getSuperclass()
1 package com.fwj.classdemo; 2 3 import java.lang.reflect.Constructor; 4 5 public class PersonClassDemo { 6 7 public static void main(String[] args) throws Exception{ 8 Class<?> c = null; 9 Person p = null; 10 c = Class.forName("com.fwj.classdemo.Person");//实例化Class对象 11 System.out.println(c.getSuperclass().getName()); 12 } 13 }
运行结果:
java.lang.Object
取得实现的全部接口
一个类可以实现多个接口,因此Class类中使用以下方法得到类实现的接口数组。
public Class<?>[] getInterfaces()
1 package com.fwj.classdemo; 2 3 import java.lang.reflect.Constructor; 4 5 public class PersonClassDemo { 6 7 public static void main(String[] args) throws Exception{ 8 Class<?> c = null; 9 Person p = null; 10 c = Class.forName("com.fwj.classdemo.Person");//实例化Class对象 11 Class<?> cs[] = c.getInterfaces(); 12 for (Class<?> cl : cs) { 13 System.out.println(cl.getName()); 14 } 15 } 16 }
运行结果:
com.fwj.classdemo.IStudent
取得到所有的构造方法
Class类中使用以下方法得到所有的构造方法:
public Constructor<?>[] getConstructors()
throws SecurityException
Constructor中使用以下方法得到构造方法的修饰符:
public int getModifiers()
以上方法的返回值是整数,这是由于每一个修饰符对应着一个整数,而且对于 public static final实际上是三个值相加的结果。
如果想要得到一个整数对应的修饰符,则必须使用Modifer类进行还原。方法如下:
public static String toString(int mod)
Constructor中使用以下方法得到参数的类型:
public Class<?>[] getParameterTypes()
取得一个类中的全部方法
Class类中的以下方法返回类中的所用方法:
public Method[] getMethods()
throws SecurityException
//Methods中的以下方法,用来得到方法的信息
//取得方法的修饰符
public int getModifiers()
//取得方法的返回值
public Class<?> getReturnType()
//取得方法的全部参数
public Class<?>[] getParameterTypes()
//取得方法的抛出异常
public Class<?>[] getExceptionTypes()
//取得方法的方法名
public String getName()
取得一个类中的全部属性
//得到继承而来的属性
public Field[] getFields()
throws SecurityException
//得到自己定义的属性
public Field[] getDeclaredFields()
throws SecurityException