Joyen.fu
日中则昃,月盈则食。

通过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

posted on 2013-07-25 11:30  Joyen.fu  阅读(167)  评论(0编辑  收藏  举报