这么长的故事短我有一个对象模型,其中几个不同的实体类型共享一个共同的超类型。从这个超类型派生的任何类型都拥有与之相关的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
必须从我的超类类型派生?