【发布时间】:2013-03-01 04:46:30
【问题描述】:
我想知道在 Java 中是否有一种方法可以在泛型方法中使用泛型类型,而无需指定类类型的参数。这是正常的做法:
public <T> T doSomethingGeneric(Class<T> type, int a) {
return (T) doSomethingElse(type, a);
}
我想要这个作为替代方案:
public <T> T doSomethingGeneric(int a) {
return (T) doSomethingElse(/* some magic with T here */, a);
}
背景:我正在用 Hibernate 编写实用程序方法。这是我实际尝试做的一个示例,您可以推断它如何应用于此问题。
public static <M extends Model> M get(Class<M> type, Serializable id) {
Session session = newSession();
Transaction t = session.beginTransaction();
Object model = null;
try {
model = session.get(type, id);
t.commit();
} catch (HibernateException ex) {
t.rollback();
throw ex;
}
return (M) model;
}
这可能吗?如果是这样,它是如何完成的?谢谢!
【问题讨论】:
-
出于好奇,您为什么要编写自己的
get()方法而不使用EntityManager? -
因为我是 Hibernate 的新手,不知道 EntityManager 的存在。谢谢你的提示。 :)
-
在这种情况下,我强烈建议至少浏览一下 Java EE 教程的相关部分:docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html