Java类可比不起作用

时间:2015-12-03 09:17:31

标签: java comparable

我在Android应用中使用了一个类,声明如下:

public static class MyData implements Comparable<MyData>
{
   public MyEnum myEnum;

   @Override
   public int compareTo(MyData another)
   {
       if(this.myEnum.equals(MyEnum.Value1)) 
        {  
           return 1;
        }
       if(another.myEnum.equals(MyEnum.Value1)) 
        {
            return -1;
        }
       if(this.myEnum.equals(MyEnum.Value2)) 
       { 
            return 1;
       }
       if(another.myEnum.equals(MyEnum.Value2)) 
       {
          return -1;
       }
       return 0;
   }
}

我定义了一个列表:List<MyData> myList = new LinkedList<MyData>();

将项目添加到列表后,我致电:Collections.sort(myList)

问题在于,当我调试时,我看到在调用sort方法后调用compareTo方法,但是即使它应该也不会输入第一个方法。我甚至将Eclipse中的布尔表达式放在&#34;表达式&#34; view并返回true,但代码只是跳转到return 0;,列表没有像我想的那样排序。

为什么?

1 个答案:

答案 0 :(得分:1)

最后我将该枚举类成员更改为使用Enum中的序数值初始化的int成员。

然后compareTo方法改变如下:

   @Override
   public int compareTo(MyData another)
   {
      Integer myVal = this.intVal;
      Integer otherVal = another.intVal;
      return myVal.compareTo(otherVal);
   }