通过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 @Override24 public String toString() {25 return "Person [name=" + name + ", age=" + age + "]";26 }27 28 @Override29 public String getInfo() {30 // TODO Auto-generated method stub31 return AUTHOR + name + age;32 }33 34 @Override35 public void sayHello() {36 // TODO Auto-generated method stub37 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 SecurityExceptionConstructor中使用以下方法得到构造方法的修饰符:
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