Я провел некоторые эксперименты, и похоже, что оператор in
основан на методе isCase
, как показано в следующем коде
class MyList extends ArrayList {
boolean isCase(Object val) {
return val == 66
}
}
def myList = new MyList()
myList << 55
55 in myList // Returns false but myList.contains(55) returns true
66 in myList // Returns true but myList.contains(66) returns false
Для классов коллекции JDK, я думаю, просто кажется, что оператор in
основан на contains()
, потому что isCase()
вызывает contains()
для этих классов.