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?
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
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