Chcę określić następujące klasy jako takie:Czy to jest ograniczenie z generics w Javie?
public class CollectionAttribute<E extends Collection<T>> {
private String name;
private E value;
public CollectionAttribute(String name, E value) {
this.name = name;
this.value = value;
}
public E getValue() { return value; }
public void addValue(T value) { value.add(T); }
}
To nie będzie kompilować (cannot resolve symbol T
). Jeśli zamieniam deklarację klasy na:
public class CollectionAttribute<E extends Collection<?>>
Wtedy nie mogę odwołać się do sparametryzowanego typu kolekcji.
Czy brakuje mi czegoś, czy też osiągnąłem ograniczenie z lekami generycznymi w Javie?
: -o Jakieś krótkie wyjaśnienie dlaczego? – OscarRyz
@ Support: w przeciwnym razie nie ma typu "T". – SLaks
Czy to nie jest zbyteczne? Teraz muszę określić mój T dwa razy, gdy tworzę ten obiekt :( –