2013-05-15 26 views
0

已經有兩個項目javaapplication2和javaapplication1。它們的包名稱也是一樣。在javaapplication2 ive進口javaapplication1使用試圖從不同的包中獲取類名

import javaapplication1.*; 

我需要列出在packeage中的所有類。如何實現這一目標?我嘗試了一個簡單的代碼,但它得到一個空的異常。

Package pck; 
pck = Package.getPackage("javaapplication1"); 
System.out.println(pck.getClass()); 
+0

什麼是包裝。這是你的習慣課嗎? –

+0

是否檢查該javaaplication1罐子是javaaplication1的類路徑? – dratewka

+0

伊夫在javaapplication2的編譯時庫添加javaapplication1。能夠在沒有javaapplication2的類擴展它的情況下訪問它的方法。 – cooltoad

回答

0

我沒有足夠的代表在這個問題上或將其標記爲這樣的評論,但它是一個重複的:

Getting all Classes from a Package

還有一些對上市很多很好的答案問題 - 例如頂部正在尋找實現ICommand的班,所以實現這一切,你需要做的是去除:

if (ICommand.class.isAssignableFrom(cls)) { 
    commands.add((Class<ICommand>) cls); 
} 

for循環和你有你想要的。

+0

你是正確的,但第二,我還需要檢索相應的類方法名。不要以爲這樣就能讓我做到這一點。 – cooltoad

+0

用於Java的http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html文檔說,您可以使用getDeclaredMethods()從Class中檢索Method對象的列表。 – Rossiar

0

我猜含jar包javaapplication1是不是在類路徑

Package.getPackage("javaapplication1"); 

被返回null你。

此外,

你可以看看下面的鏈接:

http://dzone.com/snippets/get-all-classes-within-package

,或者可以以獲得所需要的信息探索Reflection library from Google,下面是一個示例代碼。

例如

Reflections reflections = new Reflections("javaapplication1"); 
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class); 
0

如果你去throgh對象類API它寫成:

//對象API


的getClass 公共final類的getClass()返回運行時類的一個對象。該Class對象是被代表類的靜態同步方法鎖定的對象。

返回: 表示對象的運行時類的Class類型的對象。


它清楚地寫成它表示對象的運行時間類。 假設你在「javaapplication1」包中包含名爲「Helloworld」的類 創建該類的對象爲:

Helloworld world = new Helloworld(); 然後嘗試運行爲 System.out.println(wolrld.getClass()); 它將返回當前對象的類路徑。