class Test<G extends String>{
public G test(){return null;}
public List<G> tests(){return new ArrayList<>();}
}
public void doTest(Test t){
//works fine
String str = t.test();
//Compile error: expected String found Object
str = t.tests().iterator().next();
}
Я хотел бы, чтобы последняя строка возвращала экземпляр String вместо Object, поскольку тип G был привязан к подклассу String. Есть ли другой способ, кроме кастинга?
ArrayList
тогда был бы необработанным типом. Не совсем уверен, почемуt.test()
вернетString
. - person awksp   schedule 11.06.2014G extends String
Есть ли смысл в этом типе дженерика.String
- неизменяемый конечный класс. В этом случае просто используйтеTest<String>
. Попробуйтеnew ArrayList<G>()
- person Braj   schedule 11.06.2014