3

Warum tritt beim Vergleich einer Java-Ganzzahl mit einer Python-Datei desselben Werts in Jython das folgende Verhalten auf?Ungleiches Verhalten beim Vergleich von Java- und Jython-Typen

>>> from java.lang import Integer 
>>> 10 == Integer(10) 
False 
>>> 10 <= Integer(10) 
True 
>>> 10 >= Integer(10) 
True 

Okay, also ich finde es seltsam, dass beide <= und >= Betreiber zu bewerten, wie erwartet, noch == nicht funktioniert ... so lässt sich nun davon impliziten Konvertierungen zwischen Java & Jython-Typen:

>>> i = Integer(10) 
>>> i == 10 
False 

Was ist mit anderen Java-Klassen, die ich höre? Lets versuchen:

>>> from java.lang import Boolean 
>>> Boolean(0) == False 
False 
>>> Boolean(0) == True 
False 
>>> Boolean(0) # lets just check it is a Java false not a Python one 
false 

bin ich etwas fehlt oder ist es nur so einfach wie die __eq__ Magie (dunder) Methoden für die Java-Klassen gebrochen werden (Ich bin mit Jython 2.7)?

EDIT

Dank weston zur Klärung, dass in Java 10 == new Integer(10) als true auswertet und damit die Frage nicht ein Duplikat What is the difference between == vs equals() in Java?

+2

Mögliches Duplikat von [Was ist der Unterschied zwischen == und equals() in Java?] (Http://stackoverflow.com/questions/7520432/what-is-the-difference-between-vs-equals-in -java) – Julien

+1

Kein Duplikat, diese Frage erklärt das nicht, weil dieses Verhalten nicht in Java gesehen wird. 10 == new Integer (10) 'ist in Java wahr. – weston

Antwort

4

Im Wesentlichen ist es, weil ==Referenzen für geschachtelte Typen vergleicht, nicht die tatsächlichen Werte.

Aber um die Gewässer weiter <= und >= schlammig werden automatisch boxed Operanden.

+1

Wo also nur eine Seite eingerahmt ist, wird jython '==' die andere Seite boxen, im Gegensatz zu Java, das die Boxed Box auspackt. Natürlich würde das das Verhalten erklären, aber haben Sie eine Referenz? – weston

+1

jython.org: ["Diese Operatoren haben keinen signifikanten Unterschied zu Java."] (Http://www.jython.org/jythonbook/en/1.0/OpsExpressPF.html#comparison-operators) Scheint seltsam, dass dies der Fall ist Abreise ist nicht erwähnenswert. – weston

Verwandte Themen