Java编程的动态性,第2部分: 引入反射 - 编程入门网
vaBean属性。例如,如果对象为一个整数 count 值定义了 getCount 和 setCount 方法,您可以在一次调用中向该方法传递“count”作为 name 参数 ,以增加该值。
清单4:通过反射增加一个JavaBean 属性
为了遵循JavaBeans惯例,我把属性名的首字母改为大写,然后预先考虑 get 来创建读方 法名, set 来创建写方法名。JavaBeans读方法仅返回值,而写方法使用值作为唯一的参数 ,因此我规定方法的参数类型以进行匹配。最后,该惯例要求方法为公共,因此我使用查找 格式,查找类上可调用的公共方法。 这一实例是第一个我使用反射传递主值的实例,因此现在我们来看看它是如何工作的。基 本原理很简单:无论什么时候您需要传递主值,只需用相应封装类的一个实例(在 java.lang 包中定义)来替换该类主值。这可以应用于调用和返回。因此,当我在实例中调 用 get 方法时,我预计结果为实际 int 属性值的 java.lang.Integer 封装。 反射数组 数组是Java编程语言中的对象。与所有对象一样,它们都有类。如果您有一个数组,使用 标准 getClass 方法,您可以获得该数组的类,就象任何其它对象一样。但是, 不通过现有 的实例来获得类不同于其它类型的对象。即使您有一个数组类,您也不能直接对它进行太多 的操作 -- 反射为标准类提供的构造函数接入不能用于数组,而且数组没有任何可接入的字 段,只有基本的 java.lang.Object 方法定义用于数组对象。 数组的特殊处理使用 java.lang.reflect.Array 类提供的静态方法的集合。该类中的方 法使您能够创建新数组,获得数组对象的长度,读和写数组对象的索引值。 清单5显示了一种重新调整现有数组大小的有效方法。它使用反射来创建相同类型的新数 组,然后在返回新数组之前,在老数组中复制所有数据。 清单 5:通过反射来扩展一个数组
Java编程的动态性,第2部分: 引入反射(4)时间:2011-04-09 IBM Dennis M. Sosnoski安全性和反射 在处理反射时安全性是一个较复杂的问题。反射经常由框架型代码使用,由于这一点,您 可能希望框架能够全面接入您的代码,无需考虑常规的接入限制。但是,在其它情况下,不 受控制的接入会带来严重的安全性风险,如当代码在不值得信任的代码共享的环境中运行时 。 由于这些互相矛盾的需求,Java编程语言定义一种多级别方法来处理反射的安全性。基本 模式是对反射实施与应用于源代码接入相同的的限制: 从任意位置到类公共组件的接入 类自身外部无任何到私有组件的接入 受保护和打包(缺省接入)组件的有限接入 不过-至少 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |