Методы, которые являются общими с помощью параметра 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
полезен для общих методов?