java – 如何为泛型对实现equals?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何为泛型对实现equals?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含971字,纯文字阅读大概需要2分钟。
内容图文
只是为了好玩,我正在尝试用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);
}
}
然而,对实例< A,B>似乎不起作用.这是为什么?
使用(o instanceof Pair)&&等于((对< A,B>)o)给我一个关于演员的警告.摆脱< A,B>演员的一部分仍然给我一个警告,我想也有一些道理.
这是否意味着Java无法阻止客户端比较具有不同类型参数的Pairs?
解决方法:
Does that mean Java cannot prevent clients from comparing Pairs with different type arguments?
是的,但这就是重点 – equals应该适用于任意对象.你想要的样子
@Override
public boolean equals(Object o)
{
if (o instanceof Pair) {
Pair<?, ?> pair = (Pair<?, ?>) o;
return _1.equals(pair._1) && _2.equals(pair._2);
}
return false;
}
但是这应该没问题,只要A和B有适当的等于实现任意对象的实现.
内容总结
以上是互联网集市为您收集整理的java – 如何为泛型对实现equals?全部内容,希望文章能够帮你解决java – 如何为泛型对实现equals?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。