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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值