Цитата(Shaggie @ 19.3.2008, 14:06 ) | | Странно, что конструкция <T extends Feature> никак не влияет на принимаемые им решения. |
В принципе, ничего странного. <T extends Feature> - это не обязательно Feature. Если вместо T подставить наследника Feature, нехорошо получится. Зато вот так всё будет компилироваться без ошибок и предупреждений:
| Код | interface CloneableFeature<T extends CloneableFeature<T>> { T clone(); }
class Feature implements CloneableFeature<Feature> { public Feature clone() { return new Feature(); } }
class Test<T extends CloneableFeature<T>> { Set<T> cuteSet; public synchronized List<T> getStuffByName(String name) { List<T> someList = new LinkedList<T>(); if (cuteSet != null) { for (T item : cuteSet) { someList.add(item.clone()); } } return someList; }
} |
|