反射实践 - 编程入门网
---");
if (constructors.length > 0) {
System.out.println();
System.out.println("Constructors:");
for (Constructor<?> constructor : constructors) {
System.out.println(constructor);
}
}
if (fields.length > 0) {
System.out.println();
System.out.println("Fields:");
for (Field field : fields) {
System.out.println(field);
}
}
if (methods.length > 0) {
System.out.println();
System.out.println("Methods:");
for (Method method : methods) {
System.out.println(method);
}
}
}
}
反射实践(3)时间:2011-08-09 Albert AttardJava 包含一组与反射有关的类,这些类被打包在反射 API 下。类 Constructor、 Field 和 Method 就是属于这个程序包的其中一些类。如同众所周知的 Class 类一样, Java 使用这些类将我们所编写的 程序演示为对象。为了描述对象,我们需要知道它的组成。我们从哪里开始呢?那就从这个类开始吧,因 为它包含了我们的所有代码。
注意到这里的泛型声明 Class<?>。泛型,简单地说,就是通过确保给出的实例是某种指定的类 型提供类型安全的操作。我们的方法 (describeInstance(Object)) 并未绑定到某个特定的类型,而是设 计为与任何给定的对象共同工作。因此,使用无限制的通配符 <?>。 Class 类有很多方法。我们将重点介绍与我们有关的方法。在下面的代码片段中列出了这些方法。
上面的 Class 方法返回了一组组成该对象构造函数、字段以及方法。 请注意,Class 类包含两组 getter 方法:一组在其名称中包含 declared 单词,而另一组则不包含 这个单词。不同之处在于, getDeclaredMethods() 将返回属于这个类的所有方法,而 getMethods() 只 返回 public 方法。理解只返回在这个类中声明的方法,这一点非常重要。继承的方法是不会被检索到的 。 理解 ReflectionUtil 类没有对 Product 类的引用,这一点也非常重要。我们需要另一个创建产品详 细信息类的实例并打印其详细信息的类。
上面的这个类应该产生以下输出(或者类似于以下内容的输出):
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |