反射实践 - 编程入门网
。
上面的代码将产生以下输出:1234. 通过反射调用方法 或许您已经猜到,调用方法与创建新实例以及访问上面讨论的字段非常类似。 就涉及的反射而言,所有方法都具有参数并且返回值。这听起来可能比较奇怪,但它确实是这样。让 我们分析下面的方法:
该方法具有一个类型为 void 的返回类型,还有一个空的参数列表。可以采用以下方式通过反射调用 该方法。
invoke 方法来自 Method 类,需要两个参数:将调用方法的实例以及作为对象数组的参数列表。请注 意,方法 doNothing() 没有参数。尽管这样,我们仍然还需要将参数指定为空的对象数组。 方法还具有一个返回类型;本例中为 void。可以将该返回类型(如果有)另存为 Object,某些内容 类似于以下示例。
在本例中,返回值为 null,因为该方法不返回任何值。请注意,方法可以故意返回 null,但这样可 能会有点混淆。 完成此部分之前,理解可以采用与字段相同的方式继承方法,这一点非常重要。我们可以使用另一种 实用方法在层次结构中检索该方法,而不是只从手边的类中检索。
最后,下面列出了范型 invoke 方法。请再次注意,方法可以是 private,因此在调用它们之前最好 设置它们的可访问性。 反射实践(9)时间:2011-08-09 Albert Attard应用程序中的反射 直到现在,我们仅创建了食用方法并且试验了几个简单的示例。实际的编程需要的不只这些。想像我 们需要搜索我们的对象并确定给定对象是否符合某些条件。第一个选项是编写一个接口并在每个对象(如 果该实例符合条件,则对象返回 true,否则返回 false)中实现它。不幸的是,该方法要求我们在我们 拥有的每个类中执行一个方法。新的类不许实现该接口并为其抽象方法提供主要部分。或者,我们也可以 使用反射检索对象的字段并检查它们的值是否符合条件。 让我们首先创建另一个返回该对象字段的方法。请记住,没有一种内置的方法可以返回所有字段,包 括继承的字段。因此,我们需要通过逐组提取它们来亲自检索它们,直到我们达到层次结构的顶部为止。 可以向 ReflectionUtil 类中添加该方法。
现在,我们只需要让它们的字符串值与给定的条件相匹配,如下面的代码片段中所示。使用 String 方法 valueOf(Object) 将字段的值转换为字符串,而不返回 null 或抛出任何异常。请注意,这可能并 不总 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |