AFAIK the problem is that the
equals methods of array simply checks for reference equality, and == desugars to
equals (with some subtlety for nulls).
Now you could special case == in case where arrays are involved
If you use the static type, which means that you will get the old, default behavior when you pass arrays as
Object. Sure, that is much less common, but it would be a real puzzler when it happens.
Otherwise you need to perform a dynamic type check, which has overhead. That may be fine however (especially since you only have to do it with
Object, other types can’t be arrays).