Либо я слишком глуп, чтобы использовать Google, либо пока никто не сталкивался с этой проблемой.
Я ' m пытается скомпилировать следующий код:
public interface MyClass {
public class Util {
private static MyClass _this;
public static <T extends MyClass> T getInstance(Class<T> clazz) {
if(_this == null) {
try {
_this = clazz.newInstance();
} catch(Exception e) {
e.printStackTrace();
}
}
return _this;
}
}
}
Howerer, в строке "return _this;" Я получаю сообщение об ошибке «Несоответствие типа: невозможно преобразовать MyClass в T» Почему это? T расширяет MyClass, так в чем же проблема? Если я изменю строку на «return (T) _this;», я просто получаю предупреждение о непроверенном приведении, но мне не нравятся предупреждения ;-) Есть ли способ добиться желаемого без ошибок или предупреждений?