java反射机制小结

1.什么是反射

JAVA 反射机制(Java Reflection) 是Java 被视为动态(或准动态)语言的一个关键性质。
        这个机制允许程序在执行期透过Reflection API 取得任何一个已知名称的class 的内部资讯,
        对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;
        这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.

在JDK类库中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中。
l         Class类:代表一个类。
l         Field类:代表类的属性。
l         Method类:代表类的方法。
l         Constructor类:代表类的构造方法。
l         Array类:提供了动态创建数组,以及访问数组元素的静态方法。
l         Proxy类和InvocationHandler接口:提供了生成动态代理类及其实例的方法。

2.取得一个Class object的方法有以下:
1)运用getclass()
        如, String str = "abc";
        Class cl = str.getclass();
2)运用Class.getSuperclass()
        如,Button b = new Button ();
            Class c1 = b.getClass ();
            Class c2 = cl.getSuperclass();
3)运用Class.forName()
        如,Class c1 = Class.forName ("java.lang.String");
            Class c2 = Class.forName ("I");
4)运用.class 语法
        如,Class c1 = String.class;
5)运用primitive wrapper classes 的TYPE 语法
        如,Class c1 = Boolean.TYPE;
            Class c2 = Void.TYPE;

3.还原class的原貌

4.动态性质:
1)运行时生成instance
2)执行期唤起methods
3)运行时改动fields

5.静态代理和动态代理
  1)静态代理类:
     由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理 类的.class文件就已经存在了

  2)动态代理类:
     在程序运行时,运用反射机制动态创建而成。

posted on 2011-05-04 18:26  SeQuence.Choi  阅读(485)  评论(0编辑  收藏  举报

导航