如何使用二元运算符“<”和“>”来比较Java中的对象?
How to use binary operators "<" and ">" for comparing objects in Java?
考虑在 Java 中加入此 class:
public class Foo implements Comparable<Foo> {
private int someValue;
@Override
public int compareTo(Foo o) {
if (this.someValue < o.someValue) {
return -1;
} else if (this.someValue == o.someValue) {
return 0;
} else {
return 1;
}
}
}
我试过这样做:
Foo foo1 = new Foo(someValue);
Foo foo2 = new Foo(someAnotherValue);
if (foo1 < foo2) {
// do something
}
但是 IDE 给我一个错误是:"Bad operand types for binary operation '<' first type: Foo, second type: Foo"
你能告诉我哪里出了问题吗?
在此先感谢您的帮助,
实现 Comparable
接口是正确比较对象的良好开端。但是,这不允许您使用 <
和 >
比较运算符,就好像这些运算符已过载一样。你只需要调用你的 compareTo
方法。
if (foo1.compareTo(foo2) < 0) {
考虑在 Java 中加入此 class:
public class Foo implements Comparable<Foo> {
private int someValue;
@Override
public int compareTo(Foo o) {
if (this.someValue < o.someValue) {
return -1;
} else if (this.someValue == o.someValue) {
return 0;
} else {
return 1;
}
}
}
我试过这样做:
Foo foo1 = new Foo(someValue);
Foo foo2 = new Foo(someAnotherValue);
if (foo1 < foo2) {
// do something
}
但是 IDE 给我一个错误是:"Bad operand types for binary operation '<' first type: Foo, second type: Foo"
你能告诉我哪里出了问题吗?
在此先感谢您的帮助,
实现 Comparable
接口是正确比较对象的良好开端。但是,这不允许您使用 <
和 >
比较运算符,就好像这些运算符已过载一样。你只需要调用你的 compareTo
方法。
if (foo1.compareTo(foo2) < 0) {