2011-06-29 57 views
1

是否有任何API,最好J2SE(但願意考慮替代方案)的一部分,它允許Java類名操縱和分析?Java類和包名操作

例如,給定表示一個類名稱(例如,把將被傳遞給一個ClassLoader,一個API來從一個類名稱提取包名稱,如果存在的話提取任何內部類名等一個String

我不能創建一個從字符串Class對象,然後利用反射的方法,因爲這是在創建任何類之前,所有發生的事情 - 這個代碼需要解析字符串來決定如何在第一時間創建Class所以。 API需要在String的工作。

回答

0

添加這一點,因爲它已經有一段時間而且我也沒有預見到任何新的答案:我不相信J2SE中有任何API可以讓您分析字符串類名稱。這不是太難,你自己寫的,事情就是這樣的包名稱格式在語言規範中定義並不太可能改變(即,.他們不會開始使用時間比其他的東西來分隔包名)。

3

有許多在java.lang.Class方法,你可以工作:

Class inner  = Class.forName("my.package.TopLevel$Inner"); 
Class topLevel = inner.getDeclaringClass(); 
Class[] allInner = topLevel.getDeclaredClasses(); 

Class anonymous = Class.forName("my.package.TopLevel$Inner$2"); 
Class stringArray = Class.forName("[Ljava.lang.String;");  

Package pkg = topLevel.getPackage(); 
+0

對不起,我可能是不明確的 - 我有一個代表的類名字符串和我要分析這些,作爲執行(例如)一個ClassLoader的一部分。所以我絕對沒有Class對象。 – BeeOnRope