JAVA基础:从.class文件中寻找类名

文章作者 100test 发表时间 2007:03:14 17:01:56
来源 100Test.Com百考试题网


可以有多种方式判断类的名字:

假定所有的类都以com,org,或者net开头
搜索classpath来寻找名字为Hack的类
搜索classpath来寻找映射到这个文件的目录入口
直接查看类自身。对于所有的情况下,这是最直接的
Java规范规定了如何查看一个class文件。存储在class文件一开始的一个值就是以Java内部分割符“/”为格式的完整的类明。

下面的代码返回了文件C:\code\hacks\research\com\generationjava\Hack.class的内部类名com/generationjava/Hack,读者可以进一步编写代码将“/”转换成“.”:

static final public int MAGIC = 0xCAFEBABE.
// 传递C:\code\hacks\research\com\generationjava\Hack.class
// 假定存在这样一个类
public String getFullyQualifiedName(String filename) throws IOException {
String name = null.

try {
DataInputStream in = new
DataInputStream(new FileInputStream(filename)).
if(in.readInt() != MAGIC) {
// 不是一个.class文件
thrownew IOException("Not a class file").
}

in.readUnsignedShort().// 次版本号
in.readUnsignedShort().// 主版本号
in.readUnsignedShort().// 长度
in.readByte().// CLASS=7
in.readUnsignedShort().// 忽略这个地方
in.readByte().// UTF8=1
name =in.readUTF().//类的名字!!!
in.close().
} catch(IOException ioe) {
ioe.printStackTrace().
}

return name.
}
当你直接从.class文件中获得类的信息的时候,就简化了开发。查找一个匿名.class类文件的完整的类名是任何基于.class文件工作的应用的重要部件。


相关文章


JAVA基础:Linux下的多线程编程
Java实现HTTP文件下载
JAVA基础:Java语言开发工具大比拼
JAVA基础:浅谈Java与C#的事件处理机制
JAVA基础:从.class文件中寻找类名
平台非依赖性建议及使用抽象隔离变化
指导:如何掌握Java(J2SE篇)
新手必读Java中流的概念
关于多结果集的存储过程的处理
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛