Java 反射,Java reflect

reflect是Java开发语言特征之一,在lang包下;它允许运行中的Java程序对自身进行检测。并能直接操作程序内部的属性。

import java.lang.reflect.Field;   
public class extendsTest {
public static void main(String[] args) throws Exception{
//四种获得Class的方法
Class clazz = java.lang.String.class;
Class clazz2 = Class.forName("java.lang.String");
Class clazz3 = Parent.class.getClass();
Class clazz4 = Integer.TYPE;

//1. 获得Class对象 2.对象操作 
Class clazzParent = Parent.class;
Parent parent = new Parent();
Field field = clazzParent.getDeclaredField("name");
field.setAccessible(true); //取消安全检查
field.set(parent, "李四");
System.out.println(parent.getName());
}
}
class Parent{
private String name="张三";
public String getName(){
return this.name;
}

}




reflect允许在程序创建和控制人和对象(根据安全性,可以忽略安全性:setAccessible(true)),无需提前编码目标对象。在存储对象数据库中、XML、及外部框架比较常用。

reflect 两个缺点:(1) 性能上比实际编写的代码要慢 (2) 使用反射会模糊实际代码内部要发生的事情

更多相关反射知识参考:http://wenku.baidu.com/view/472725fff705cc17552709f3.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值