赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

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

发布时间:2008.01.03 04:38     来源:赛迪网    作者:hdy007

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

假定所有的类都以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入门:java语言中的一些常用的词汇 (01-02) · Tomcat5的web应用启动顺序详解 (01-02)
· Tomcat类的加载机制 (01-02) · tomcat深入 内部结构描述 (01-02)
· TOMCAT+IIS配置方法 (01-02) · 开源 tomcat5.0下配置ssl (01-02)
· Java语言深入:Java类的完整构造执行顺序 (01-02) · short,int,long与byte数组之间的转换 (01-02)
· Java入门:Date类型与String类型的转化 (01-02) · Tomcat 配置技巧精华详解分析 (01-02)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统