我想知道是否有办法在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;
}
这可能吗?如果是这样,它是如何完成的?谢谢!
出于好奇,为什么你写你自己的'得到()'方法,而不是使用['EntityManager'(http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager。 HTML)? – 2013-02-28 20:50:10
因为我是Hibernate的新手,并不知道EntityManager存在。谢谢你的提示。 :) – 2013-02-28 20:51:13
在这种情况下,我强烈推荐至少浏览Java EE教程的相关部分:http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html – 2013-02-28 20:54:24