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;
}
これは可能ですか?もしそうなら、それはどのように行われますか?ありがとう!