Parametr sparametryzowany ogólnie jest klasą, która zajmuje się innym obiektem bez ciekawego typu. Typ może być zdefiniowany przy użyciu symbolicznej "nazwy", a następnie przekazywany, gdy tworzona jest klasa klasy.
Na przykład
class MyClass<T> {
private T obj;
public MyClass<T>(T obj) {
this.obj = obj;
}
public int getId() {
return obj.hashCode();
}
}
W powyższym przykładzie MyClass
okłady Przedmiot według dowolnego typu, wykonuje sposób jego hashCode()
wykorzystując fakt, że ten sposób zawsze istnieje.
Oto jak ta klasa jest używana:
int sid = new MyClass<String>("aaaa").hashCode();
Proszę zwrócić uwagę, że nie można powiedzieć new MyClass<String>(123)
: fakt, że obiekt jest tworzony z parametrem String
dyktuje rodzaj argumentu konstruktora.
Powracanie do twojego przykładu Collection<String>
oznacza "zbiór ciągów". Oznacza to, że nie można dodać do tego zbioru obiektu innego typu.
Jak o czytanie następne zdanie w linku, który podałeś: „Deklaracja Collection oznacza typ sparametryzowane, co stanowi instancji generycznego typu Collection, gdzie miejsce uchwyt E został zastąpiony przez konkretny typ String "? –
@JBNizet, Tak, moje zamieszanie wynika z typu instancji 'LinkedList'. Twój komentarz poniżej wyjaśnia to dla mnie. –
wulfgarpro