有时候需要知道比Class类所提供的信息多得多的有关一个类型的信息。出于这种目的,可以使用程序包java.lang.reflect中的类,换句话说就是所说的反射API。这个类集提高了Class类的能力和有效性。
反射API支持一种名为自省的行为,这种行为实际上使一个类描述自身。
反射API使对象具有反射自己和发现自身内容的能力。程序包java.lang.reflect定义了很多类,这些类总体上对一个对象作了完整的描述。
下面给出了这3种类表示类的构建块:
(1)Constructor类的每个实例都提供了关于一个类的一个构造函数的信息,并且为调用程序提供了使用这个构造函数以创建一个对象的方式。
(2)Method类的每个实例都提供了关于一个类的一种方法的信息,并且为调用程序提供了调用这种方法的方式。这种方法可能是类的方法或者实例的方法,而且可能是抽象的。
(3)Field类的每个实例都提供了关于一个类的一个域的信息,并且为调用程序提供了获得和设置这个域的值的方法。这个域可以是类变量或者实例变量。
下面用一个例子帮助大家了解:
1
import java.lang.reflect.*;
2
3
public class ReflectionDemo
4
2
3
4
结果如下:
Methods defined in class TestClass
public void TestClass.test1(int,java.lang.String)
public int TestClass.test2(int[])
public java.lang.String TestClass.test3()
test1
1 = 2 and str = "this is test"
Returned value: null
test2
Result value: 15
test3
Returned value: "No input parameter"