這麼長的故事短我有一個對象模型,其中幾個不同的實體類型共享一個共同的超類型。從這個超類型派生的任何類型都擁有與之相關的User
,並且我想提供一個通用實用程序函數,該函數可以返回屬於指定User
的給定類型的所有實體。Java - 正確聲明通用函數的方法?
所有這一切工作正常,但我的函數聲明如下:
public static <T> List<T> findByUser(Class<T> entityClass, User user, EntityManager em)
...雖然這是由編譯器所接受,語法看起來有點怪我。這是用泛型返回類型聲明函數的正確方法嗎?理想的情況是什麼,我想有更多的東西,如:
public static List<T> findByUser(Class<T extends MySuperClass> entityClass, User user, EntityManager em)
但是編譯器不喜歡,在所有。所以,我的具體問題是:
- 有什麼辦法
static
後襬脫看似虛假<T>
元素? - 我需要用什麼語法使編譯器強制執行
T
必須從我的超類類型派生?