国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

從.class文件中尋找類名

2019-11-18 15:06:56
字體:
來源:轉載
供稿:網友

  作者: BUILDER.COM

設想這樣一個情形:用戶通過GUI或者在命令行選擇一個class文件,但是他(或她)沒有能夠提供完全有效的類名。

例如,對于C:codehacks esearchcomgenerationjavaHack.class,正確的類名是com.generationjava.Hack。

可以有多種方式判定類的名字:

假定所有的類都以com,org,或者net開頭
搜索classpath來尋找名字為Hack的類
搜索classpath來尋找映射到這個文件的目錄入口
直接查看類自身。對于所有的情況下,這是最直接的
Java規范規定了如何查看一個class文件。存儲在class文件一開始的一個值就是以Java內部分割符“/”為格式的完整的類明。

下面的代碼返回了文件C:codehacks esearchcomgenerationjavaHack.class的內部類名com/generationjava/Hack,讀者可以進一步編寫代碼將“/”轉換成“.”:

static final public int MAGIC = 0xCAFEBABE;
// 傳遞C:codehacks esearchcomgenerationjavaHack.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文件工作的應用的重要部件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁津县| 镇平县| 九龙城区| 普兰店市| 云阳县| 垦利县| 泰州市| 金昌市| 临城县| 吴堡县| 武宁县| 延长县| 宽甸| 蓝山县| 宝鸡市| 莲花县| 贵阳市| 嘉祥县| 深水埗区| 景德镇市| 五家渠市| 饶平县| 太仓市| 大安市| 漯河市| 陆良县| 扶风县| 沿河| 盐城市| 英超| 唐山市| 阿拉善左旗| 温泉县| 咸阳市| 长汀县| 筠连县| 庆安县| 如东县| 兴城市| 皋兰县| 新野县|