Java的RTTI(Run Time Type Identification)提供了很多手段,可以让程序员更好的了解类的构成,即类到底有哪些函数,有哪些成员,这对我们更好的理解类以及其他相关概念有很大的帮助.
这需要用类Class中有函数getMethods(),getDeclaredFields()来完成,在<Thinking in Java>中, Bruce Eckel写了个ShowMethods的工具类,”依葫芦画瓢”,我写了ShowFields类,这两个工具类就可以帮助我们来解剖任何一个类了,很有用吧!
No.1 ShowMethods.java
import java.lang.reflect.*;
public class ShowMethods {
static final String usage =
"usage: \n" +
"ShowMethods qualified.class.name\n" +
"To show all methods in class or: \n" +
"ShowMethods qualified.class.name word\n" +
"To search for methods involving 'word'";
public static void main(String[] args) {
if(args.length < 1) {
System.out.println(usage);
System.exit(0);
}
try {
Class c = Class.forName(args[0]);
Method[] m = c.getMethods();
Constructor[] ctor = c.getConstructors();
if(args.length == 1) {
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
for (int i = 0; i < ctor.length; i++)
System.out.println(ctor[i].toString());
}
else {
for (int i = 0; i < m.length; i++)
if(m[i].toString()
.indexOf(args[1])!= -1)
System.out.println(m[i].toString());
for (int i = 0; i < ctor.length; i++)
if(ctor[i].toString()
.indexOf(args[1])!= -1)
System.out.println(ctor[i].toString());
}
} catch (ClassNotFoundException e) {
System.out.println("No such class: " + e);
}
}
} ///:~
No.2 ShowFields.java
import java.lang.reflect.*;
public class ShowFields {
static final String usage =
"usage: \n" +
"ShowFields qualified.class.name\n" +
"To show all fields in class or: \n" +
"ShowFields qualified.class.name word\n" +
"To search for fields involving 'word'";
public static void main(String[] args) {
if(args.length < 1) {
System.out.println(usage);
System.exit(0);
}
try {
Class c = Class.forName(args[0]);
Field[] f = c.getDeclaredFields();
if(args.length == 1) {
for (int i = 0; i < f.length; i++)
System.out.println(f[i].toString());
}
else {
for (int i = 0; i < f.length; i++)
if(f[i].toString()
.indexOf(args[1])!= -1)
System.out.println(f[i].toString());
}
} catch (ClassNotFoundException e) {
System.out.println("No such class: " + e);
}
}
} ///:~
分享到:
相关推荐
书中的实例将帮助读者理解这些概念,如选择器(如类选择器、ID选择器、元素选择器)、属性(如color、font-size、margin)以及它们的值。 深入学习CSS,需要理解盒模型,这是CSS布局的基础。它包括元素的content、...
【电脑病毒的彻底研究】 电脑病毒,作为信息技术领域的一个重要课题,是计算机用户必须了解和防范的对象。这种恶意软件能够自我复制并传播,对个人电脑、网络系统甚至整个社会的信息安全构成严重威胁。电脑病毒的...
这些组成部分共同构成了8051单片机的基础架构,使得它能够在硬件层面实现数据处理和控制功能。 在CPU方面,8051单片机采用CISC(复杂指令集计算)架构,拥有丰富的指令集,包括数据处理、转移、控制和输入/输出等...
彻底卸载McAfee及其Agent涉及对软件架构的深入了解,以及正确执行一系列卸载步骤。由于McAfee的组件紧密集成且相互依赖,因此,即使是在卸载过程中也应保持谨慎,遵循官方指南并采取适当的预防措施,以防止系统稳定...
《计算机构成及现代计算机发展史》 本文主要讲述了计算机构成和现代计算机发展史的相关...计算机构成和现代计算机发展史是计算机科学中两个非常重要的方面,了解这些知识点对于计算机科学的发展和应用都是非常重要的。
这要求申请人在申请前进行彻底的市场调研和商标检索,以及熟悉尼斯分类的所有类别和子类别。 对于想要了解具体分类细节的申请人,通常需要查阅最新版的尼斯分类表来获取准确信息。尼斯分类表会提供每个类别的详细...
了解如何创建与删除这类账户不仅有助于提高个人的技术水平,更是维护系统安全的重要环节。通过上述方法,我们可以有效地管理和防范隐藏账户带来的潜在风险。当然,对于大多数非技术人员来说,最佳的做法还是依靠可靠...
这个“彻底精通BP神经网络通过四个matlab建模案例”压缩包文件提供了一系列实例,旨在帮助用户深入理解和掌握BP神经网络的建模方法。 首先,BP神经网络的基础知识包括其结构和工作原理。它由输入层、隐藏层和输出层...
ROS主要由以下几个关键组件构成: 1. **节点(Nodes)**:ROS中的基本执行单元,每个节点负责执行特定的任务,如传感器数据处理或运动控制。 2. **话题(Topics)**:节点之间通信的通道,通过发布(publish)和...
字符流则由Reader和Writer类及其子类构成,如 FileReader和FileWriter。 进一步地,Java提供了缓冲机制以提高I/O性能。BufferedInputStream和BufferedOutputStream增加了缓冲区,使得数据读写更加高效。而...
对于这类废物,必须进行彻底的消毒和安全处置,以防止病原体的传播。 药物性废物主要由过期、淘汰、变质或污染的药品构成,它们可能含有对人体和环境有害的化学成分。对于这些药物的处理,需要特别注意,应遵循相关...
8. **【比喻构词】**:通过比喻手法构成的成语,如“胆小如鼠”形容胆怯,“一败如水”表示彻底失败,“稳如泰山”表示稳固无比。 9. **【夸张构词】**:“怒发冲冠”表示极度愤怒,“一目十行”形容阅读速度快,...
这种病毒通常利用系统漏洞或者用户不当的操作进行传播,对个人数据安全和系统稳定性构成威胁。针对这个问题,"彻底解决文件夹病毒之疫苗文件再现" 提供了一个可能的解决方案。 首先,我们需要了解病毒的工作机制。...
企业业务流程重组(Business Process Reengineering, BPR)是一种深度变革管理策略,旨在通过彻底改造组织的工作流程,以提高效率、降低成本和提升服务质量。本PPT详细介绍了BPR的构成及其实施过程。 首先,流程是...
XML文档由元素构成,每个元素都由开始标签和结束标签包围,例如`<element>`和`</element>`。元素可以包含文本内容、属性,甚至其他元素。XML还强调严格的语法,确保数据的一致性和可读性。 在XML网页制作中,我们...
综上所述,软交换技术的十大功能各自独立,但又相互关联,共同构成了下一代网络的核心。这些功能不仅保证了网络的平稳过渡,也提高了网络的效率、灵活性和可扩展性,是电信行业向NGN演进过程中不可或缺的技术支撑。...
因此,了解如何彻底清除电脑使用痕迹至关重要。本教程将指导你通过以下几个方面来保护你的数据安全: 1. **“我最近的文档”选单** Windows系统的“我最近的文档”选单会保存最近使用的15个文件快捷方式,包括在线...
PNN由输入层、模式层和决策层构成。输入层接收原始输入数据,模式层使用高斯函数对每个类别的训练样本进行拟合,形成概率密度函数,然后在决策层通过比较各个类别概率密度函数的峰值来决定样本的类别。PNN的优点在于...
移动电源主要由外壳、电芯和电路板三部分构成。外壳通常由防火材料制成的塑料或金属,起到封装保护的作用。电芯是移动电源的核心,18650电芯和聚合物电芯是最常见的类型,其中聚合物电芯因其可塑性高和安全性相对较...
在深入分析OCL功率放大器电路故障之前,我们先要了解OCL功率放大器的基本组成和工作原理。OCL(Output Capacitor-Less)功率放大器是一种高保真音频功率放大器设计,它不使用输出耦合电容器来隔离直流电,这使得它在...