您的位置:首页 > 编程语言 > Java开发

【java高级特性之反射】Field类和Constructor类的使用

2014-10-30 14:24 423 查看
!!!反射就是将Java类中的各个成分映射成为相应的java类。

一.Constructor(构造方法)反射:

利用Constructor来构造对象:
1.获取Constructor的示例对象:
Constructor con=String.class.getConstructor(StringBuffer.class);
2.利用Constructor对象的newInstance方法来创建对象:
con.newInstance(new StringBuffer("abc"));
上述两步等效为:new String(new StringBuffer("abc"));

小知识点:"abc".getClass()==String.class//结果为true;

二.Field(成员变量)字段的反射:

示例代码如下:

package com.oterman.reflect;

import java.lang.reflect.Field;

/**
* 该例子演示Field类的使用;
*/
public class FieldDemo {
public static void main(String[] args) throws Exception {
ReflectPoint pt1=new ReflectPoint(3,5);
Class clazz=pt1.getClass();

Field fieldY=clazz.getField("y");
//fieldY代表的是类的成员的变量,不是对象的成员的值
System.out.println(fieldY.get(pt1));//输出值为5

// Field fieldX=clazz.getField("x");//会报错,因为x是用private来修饰的;
Field fieldX=clazz.getDeclaredField("x");
fieldX.setAccessible(true);
System.out.println(fieldX.get(pt1));//输出值为3
}

}
//用来做反射演示用;
class ReflectPoint{
private int x;
public int y;
public ReflectPoint(int x,int y){
this.x=x;
this.y=y;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  反射 reflect