Я не уверен, почему Java требует от меня вернуть метод makeInstance в T? Что я делаю не так? Есть ли лучший способ сделать это?java generic type parameter с newInstance
public class Scratch {
public <T extends Base> T freshen(T instance) {
//why do I need to cast this to T
return makeInstance(instance.getClass());
}
public <T extends Base> T makeInstance(Class<T> type) {
try {
return type.newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(Scratch.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Scratch.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public static final class Base {
}
}
"' GetClass() '' возвращает класс > '" 'GetClass()' 'фактически возвращает класс extends | X |> ', где' | X | 'является стиранием статического типа' instance', который в этом случае является 'Object'. – newacct