Подобных вопросов много, но, похоже, ни один из них не отвечает конкретно на мой вопрос.
Как вы создаете новый T?
У меня есть универсальный метод, мне нужно вернуть новый экземпляр типа в параметре типа.
Вот мой код ...
class MyClass {
public static MyClass fromInputStream( InputStream input ) throws IOException {
// do some stuff, and return a new MyClass.
}
}
Тогда в отдельном классе у меня есть универсальный метод, например ...
class SomeOtherClass {
public <T extends MyClass>download(URL url) throws IOException {
URLConnection conn = url.openConnection();
return T.fromInputStream( conn.getInputStream() );
}
}
Я тоже попробовал следующее ...
class SomeOtherClass {
public <T extends MyClass>download(URL url) throws IOException {
URLConnection conn = url.openConnection();
return new T( conn.getInputStream() ); // Note my MyClass constructor takes an InputStream...
}
}
Но ни одна перестановка из вышеперечисленного не скомпилируется!
Ошибка:
File: {...}/SomeOtherClass.java
Error: Cannot find symbol
symbol : class fromInputStream
location : class MyClass
Любые предложения будут оценены!