`

Java 反射机制

阅读更多

参考文章:http://java-cd.iteye.com/blog/544283

 

1. 在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:
    

     Class类:代表一个类;
     Field 类:代表类的成员变量(成员变量也称为类的属性);
     Method类:代表类的方法;
     Constructor 类:代表类的构造方法;
     Array类:提供了动态创建数组,以及访问数组的元素的静态方法;

 

2. Class类是Reflection API 中的核心类,它有以下方法:
   

     getName():获得类的完整名字;
     getFields():获得类的public类型的属性;
     getDeclaredFields():获得类的所有属性;
     getMethods():获得类的public类型的方法;
     getDeclaredMethods():获得类的所有方法;

 

     getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型;
     getConstructors():获得类的public类型的构造方法;
     getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型;
     newInstance():通过类的不带参数的构造方法创建这个类的一个对象;

 

3. 默认构造方法创建一个新对象:
   

     Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});

 

4. 获得对象的所有属性:

     Field fields[]=classType.getDeclaredFields();

 

 

为一个class生成对应的Class object的五种方法:

 

1.运用getClass()方法:

 

String str = "abc";
Class class = str.getClass();

 

2.运用Class.getSuperclass()方法:

 

Button b = new Button();
Class c1 = b.getSuperclass();
Class c2 = c1.getSuperclass();

 

3.运用静态方法Class.forName(),这个最常用:

 

Class c1 = Class.forName("java.lang.String");
Class c2 = Class.forName("java.util.Date");

 

4.运用.class语法:

 

Class c1 = String.class;
Class c2 = java.awt.Button.class;
Class c3 = int.class;
Class C4 = int[].class;

 

5.运用原始包装类的TYPE方法:

 

Class c1 = Integer.TYPE;
Class c2 = Character.TYPE;
Class c3 = Boolean.TYPE;
Class c4 = Void.TYPE;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics