只是为了好玩,我试图在 Java 中实现一个通用的 Pair 类。我遇到了麻烦equals
:
public class Pair<A, B>
{
public final A _1;
public final B _2;
// ... unnecessary details left out ...
public boolean equals(Pair<A, B> that)
{
return (_1.equals(that._1)) && (_2.equals(that._2));
}
@Override
public boolean equals(Object o)
{
return (o instanceof Pair<A, B>) && equals((Pair<A, B>) o);
}
}
但是,o instanceof Pair<A, B>
似乎不起作用。这是为什么?
使用(o instanceof Pair) && equals((Pair<A, B>) o)
给我一个演员的警告。摆脱<A, B>
演员阵容仍然给我一个警告,我想这也是有道理的。
这是否意味着 Java 不能阻止客户端将 Pairs 与不同类型的参数进行比较?