Iva*_*anN 14 java operator-overloading object comparable
如何使用"<"或">"将Java中的两个对象进行比较,例如
MyObject<String> obj1= new MyObject<String>(“blablabla”, 25);
MyObject<String> obj2= new MyObject<String>(“nannaanana”, 17);
if (obj1 > obj2)
do something.
Run Code Online (Sandbox Code Playgroud)
我把MyObject类标题设为
public class MyObject<T extends Comparable<T>> implements Comparable<MyObject<T>>
并且创建了方法Comp但是我获得的所有增益现在我可以在对象列表上使用"sort",但是如何直接比较两个对象?是
if(obj1.compareTo(obj2) > 0)
do something
Run Code Online (Sandbox Code Playgroud)
唯一的办法?
And*_*ira 17
您无法在Java中执行运算符重载.这意味着你无法定义特定行为的运营商,如+,>,<,==,等在自己的类.
正如您已经指出的那样,在这种情况下,实现Comparable和使用该compareTo()方法可能就是这样.
另一种选择是创建一个Comparator(参见文档),特别是如果它对实现类没有意义,Comparable或者你需要以不同的方式比较来自同一个类的对象.
为了提高代码可读性,您可以使用compareTo()看起来更自然的自定义方法.例如:
boolean isGreaterThan(MyObject<T> that) {
return this.compareTo(that) > 0;
}
boolean isLessThan(MyObject<T> that) {
return this.compareTo(that) < 0;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它们:
if (obj1.isGreaterThan(obj2)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15050 次 |
| 最近记录: |