我想知道是否有辦法在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