你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
反射机制在应用程序中的应用(六)
 

查看对象属性的关键方法是Field类中的get()方法。如果f是一个Field类的对象,obj是某个包含f属性的类的对象实例,那么f.get(obj)将返回一个对象,其值即为f属性的当前值。这样说起来显得有点抽象,看看下面这个实例的运行。

Customer customer = new Customer();

c.setName(“Bonheur ,. Ltd.”);

Class class = customer.getClass();

Field f = class.getDeclaredField(“name”);

Object obj = f.get(customer);   //此时obj的为一个值为“Bonheur ,. Ltd.”的字符串。

事实上,这段代码存在一个问题。由于name是一个私有属性,所有get()方法将会抛出一个IIIegalAccessException。只有利用get()方法才能得到可访问属性的值。除非拥有访问权限,否则Java安全机制只允许查看对象有哪些属性,但不允许读取它们的值。Java安全机制默认行为受限于Java的访问控制。然而,如果一个Java程序没有受到安全管理器的控制,就可以覆盖访问控制。为了达到这个目的,需要调用FieldMethodConstructor对象的setAccessible()方法。例如:f.setAccessible(true)setAccessible()方法是AccessibleObject类中的一个方法,AccessibleObjectFieldMethodConstructor类的父类,这个特性是为调试、持久存储和相似机制提供的。get()方法还有一个需要解决的问题,name属性是一个字符串,因此把它做为Object返回没有什么问题,但如果要取得一个intdouble的属性值,get()方法将返回一个IntegerDouble的类实例。

当然,可以获得就可以设置,调用f.set(Object obj, Object value)方法可以将obj对象的f属性设置为新值value

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089