Mam następujące klasy Generic:Dlaczego typy ogólne mają ten sam podpis?
class Or<A,B>
{
Or (A a) {}
Or (B b) {}
}
Dlaczego otrzymuję następujący błąd, gdy próbuję go skompilować:
Or(A) is already defined in Or Or (B b) ^
Wydaje mi się, że te dwa konstruktory mają tę samą sygnaturę chociaż mają różne argumenty typu ogólnego. Czemu? A jak obejść ten problem?
Aktualizacja
zrozumiałem problem teraz. Kompilator potrzebuje sposobu na rozróżnienie dwóch typów. Dodanie takiego ograniczenia byłoby w porządku dla mojego przypadku użycia. Chciałbym dodać kolejne pytanie:
Jak określić, że dwa typy A i B mogą być inne niż różne?
Legacy [* typ wymazywania *] (http://en.wikipedia.org/wiki/Generics_in_Java # Problems_with_type_erasure). – Paul
@ johnchen902, czy możesz dodać ten komentarz jako odpowiedź? Byłoby wspaniale –
@PrasadKharkar Ponieważ to pytanie jest oczywiście duplikatem. Nie chcę być pierwszym odbierającym, zanim zobaczę, że ktoś odpowie na 10 000 lub więcej. – johnchen902