比较Java中两个类的实例

Umu*_*ğlu 3 java

我有一个有两个整数成员的类.这些成员是块和偏移数字.我需要将这个类的两个实例与大或小的符号进行比较.例如;

instance1 < instance2
Run Code Online (Sandbox Code Playgroud)

如果声明需要返回true

instance1.blockNumber < instance2.blockNumber;
Run Code Online (Sandbox Code Playgroud)

要么

instance1.blockNumber = instance2.blockNumber;
instance1.offset < instance2.offset;
Run Code Online (Sandbox Code Playgroud)

据我所知,Java不支持运算符重载.我该怎么做这样的比较?

dur*_*597 6

让类实现Comparable接口,给出compareTo方法.然后,您可以在if语句中使用数字的值(-1对于less,1对于more,0对于equals).

如果要将这些对象放在列表中(例如,用于排序),您还应该使用@Override.equals方法.

import java.util.Comparable;

public class BlockOffset implements Comparable<BlockOffset>
{
  private int blockNumber;
  private int offset;

  @Override
  public int compareTo(BlockOffset instance2) {
    if (this.blockNumber < instance2.blockNumber) return -1;
    if (this.blockNumber > instance2.blockNumber) return 1;
    if (this.offset < instance2.offset) return -1;
    if (this.offset > instance2.offset) return 1;

    return 0;
  }   
}
Run Code Online (Sandbox Code Playgroud)


Dan*_* D. 5

如果类类型是您自己的代码,那么它可以实现Comparable并定义compareTo您可以编写逻辑的方法.然后,您可以使用它们进行比较compareTo.