Zdefiniowałem następującą klasę ogólną, ale kiedy używam jej na obiekcie klasy, nie kompiluje się. Konstruktor nie zaakceptuje innego obiektuDiament Nie kompilując Java 7
class Pair<T,V> {
T one;
V two;
public Pair(T one, V two) {
this.one = one;
this.two = two;
}
}
public static void main(String[] args) {
String hamza = "Hamza";
Integer soufiane = 0;
Pair<Object,Object> pairOne = new Pair<>(hamza, soufiane);
Pair<Object,Object> pairTwo = new Pair<Object, Object>(soufiane, hamza);
}
komunikat o błędzie:
incompatible types: Pair<String,Integer> cannot be converted to Pair<Object,Object>
Dlaczego nie pierwsza kompilacji i drugi skompilować?
EDIT: ona opracowana na Java 8
Dosyć rzadko zdarza się, że coś nie jest kompilowane, a kompilator nie mówi, dlaczego nie kompiluje się. – Tom
Zawarłem tam komunikat o błędzie! Jest to notacja diamentowa i powinna się skompilować, przynajmniej według mojej wiedzy. Dlaczego to zmusiło mnie do uwzględnienia parametrów szablonu, jest tym, czego nie rozumiem. –
Cóż, typy ogólne nie są polimorficzne, więc przypisywanie 'Pair' do 'Pair