只是为了好玩,我试图用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可以不阻止客户端比较不同类型的参数对的?