When overriding equals in Java, why does it not work to use a parameter other than Object?

后端 未结 7 1944
攒了一身酷
攒了一身酷 2020-12-03 18:13

I ran into an interesting behavior recently. It seems that if I override .equals() to take a parameter other than Object, it doesn\'t get called. Can anyone explain to me

7条回答
  •  心在旅途
    2020-12-03 18:34

    You're assuming that the contains() method in List knows the type of the object at runtime, which is incorrect.

    Because of erasure, List becomes just a regular List at runtime, so the contains() method sees its parameter as an Object, thus invoking Object's equals() instead of the one you defined for MyClass in its execution.

提交回复
热议问题