1. 什么是Java反射机制
2. 为什么要有Java反射机制
3. 一起来看ReflectionAPI
在生活中,我们使用一个未知的东西的时候总会用帮助来解决我们的使用问题,电视机有帮助,电脑有帮助,几乎所有的事物都携带着它的一本帮助,Java的反射机制也不例外。
在JDK中有Reflection API的帮助,它主要说明了什么是Java反射机制,这种反射机制提供了什么样的属性和方法,进一步我们能够知道能够通过它完成什么样的工作。
下面咱就一起看看这部分的API。这些接口和类都位于lang包里。
如图:
接口:
类:
简单介绍一些类和接口的用法。
1) Member成员是一种接口,反映有关单个成员(字段或方法)或构造方法的标识信息
2) InvocationHandler是代理实例的调用处理程序 实现的接口(这个接口的具体用法等到java反射机制剖析4着重介绍)
3) Method提供一个类的方法的信息以及访问类的方法的接口。
示例:
import java.lang.reflect.Method; public class TestMethod { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class classType=Class.forName(args[0]);
Method methods[]=classType.getDeclaredMethods();
for(int i=0;i<methods.length;i++){
System.out.println(methods[i].toString());
}
} }
4) Filed提供一个类的域的信息以及访问类的域的接口。
示例:
import java.lang.reflect.Field; public class TestField { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class classType=Class.forName(args[0]);
Field[] fields = classType.getFields();
for(int i=0;i<fields.length;i++){
System.out.println(fields[i].toString());
}
} }
5) Array 类提供了动态创建和访问 Java 数组的方法。
示例:
import java.lang.reflect.Array; public class TestArray { public TestArray(){ }
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception { Class<?> classType = Class.forName("java.lang.String"); Object array = Array.newInstance(classType, 10); Array.set(array, 5, "hello"); String s = (String)Array.get(array, 5);
System.out.println(s); } }
6) Proxy提供动态地生成代理类和类实例的静态方法(这个方法在java放射机制剖析4着重介绍)。
其余的类和接口的使用方法详见API
转自:http://blog.csdn.net/lfsf802/article/details/7239652