發現我已經花了大一天試圖理解爲什麼Java可以不編一個簡單的通用方法與泛型類型的參數,但只有當封閉類是進口的。基本上,我露出了Spring上下文操作作爲一類叫做SpringApplicationContext一個靜態方法:泛型方法與類型參數不被Java編譯器
public static <T> List<T> listBeansOfType(Class<T> type)
{
return new ArrayList<T>(context.getBeansOfType(type).values());
}
當我把它從同一個包裝單元測試,它的工作原理。這裏是測試呼叫:
List<DomainRepo> repos =
SpringApplicationContext.listBeansOfType(DomainRepo.class);
但是,當我從另一個包中的代碼調用它時,完全相同的代碼失敗。編譯器說它找不到符號listBeansOfType(java.lang.Class)。我已經導入了類,但是我沒有對該方法進行靜態導入。
更奇怪的是,這個代碼工作一個星期前,當我寫的。從那時起,我不得不在整個發佈過程中放下一切。當我使用java 1.6編譯maven或Eclipse時發生同樣的錯誤。任何提示都會比歡迎。
這個類是公開的嗎? – 2011-12-18 17:44:01