T
パラメータを使用するジェネリックなメソッドは確かに便利です。ただし、メソッドに などの引数を渡すと、ジェネリック メソッドの使用がどうなるか興味がありますClass<T> clazz
。使えそうなケースを思いつきました。おそらく、クラスのタイプに基づいてメソッドの一部のみを実行したいでしょう。例えば:
/** load(File, Collection<T>, Class<T>)
* Creates an object T from an xml. It also prints the contents of the collection if T is a House object.
* @return T
* Throws Exception
*/
private static <T> T void load(File xml, Collection<T> t, Class<T> clazz) throws Exception{
T type = (T) Jaxb.unmarshalFile(xml.getAbsolutePath(), clazz); // This method accepts a class argument. Is there an alternative to passing the class here without "clazz"? How can I put "T" in replace of "clazz" here?
if (clazz == House.class) {
System.out.println(t.toString());
} else {
t.clear();
}
return T;
}
これは受け入れられた慣行ですか?Class<T> clazz
ジェネリック メソッドで引数が役立つのはいつですか?