Почему возникает следующее поведение при сравнении целого числа Java с Python с одним и тем же значением в Jython?Нечетное поведение при сравнении типов Java и Jython
>>> from java.lang import Integer
>>> 10 == Integer(10)
False
>>> 10 <= Integer(10)
True
>>> 10 >= Integer(10)
True
Хорошо, так что я нахожу это странным, что оба <=
и >=
операторы оценивают, как и ожидалось, но ==
не ... Так что теперь позволяет проверки неявные преобразования между Java & типов Jython:
>>> i = Integer(10)
>>> i == 10
False
Как насчет других классов Java, которые, как я слышал, вы говорите? Попробуем:
>>> 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
я упускаю что-то или это так же просто, как __eq__
магия (Dunder) методы разбиты на классы Java (я использую Jython 2.7)?
EDIT
Благодаря weston для уточнения, что в Java 10 == new Integer(10)
вычисляется как true
и поэтому вопрос не является дубликат What is the difference between == vs equals() in Java?
Возможный дубликат [В чем разница между == vs equals() в Java?] (Http://stackoverflow.com/questions/7520432/what-is-the-difference-between-vs-equals-in -java) – Julien
Не дубликат, этот вопрос не объясняет это, потому что это поведение не видно в java '10 == new Integer (10)' истинно в java. – weston