Ich habe ein Problem mit generischen. Wenn ich versuche, weniger Operatoren in generic zu verwenden, findet ihr Aufruf nicht statt. Aber es funktioniert mit der Methode Equals. Das ist eine Testklasse:
%Vor%Und Klassenprüfer:
%Vor%Kleiner Test:
%Vor%Wie kann ich in der Klasse Test von generisch weniger Operatoren verwenden?
Überladene Operatoren sind statische Methoden, also nehmen sie nicht am Polymorphismus teil; Sie werden statisch zur Kompilierzeit aufgelöst, basierend auf dem bekannten Typ der Operanden.
In einer generischen Methode kann der Compiler nicht wissen, dass T
Test
ist (da es tatsächlich etwas anderes sein kann), so dass es die allgemeinste Definition von ==
verwendet, was ein Referenzvergleich ist.
Beachten Sie, dass wenn Sie eine Einschränkung für die generische Methode hinzufügen, um T
zu Test
oder eine Unterklasse von Test
zu erzwingen, wird es wie erwartet funktionieren, aber es wird natürlich nicht mehr für andere Typen funktionieren ...