为什么我的代码给了我“上次编译时的警告”?

时间:2014-05-10 00:59:28

标签: java comparator comparable

我正在尝试修改compareTo方法,以便我可以在这里使用Comparable Interface,但是它给了我声明的警告。我究竟做错了什么 ?它显示没有语法错误,但是当我单击Compile时,会弹出一个小窗口,显示一条消息:“来自上次编译的警告F:\ Desktop \ PoochyPavy.java使用未经检查或不安全的操作。使用-Xlint重新编译:没有检查细节。“

原始代码是:

   public class PoochyPavy implements Comparable
     {
         public PoochyPavy(int k)
              {
                  value = k;
              }

   public int compareTo(Object nerd) //This method doesn’t follow the normal rules
     {
         PoochyPavy pp = (PoochyPavy) nerd;

         int r;

         if (value = = 6 * pp.value)
        {
           r = 136;
        }
         else
        { 
           r = -137;
        }
          return r;
    }
        …other methods…
     public int value;
    }

我尝试修改代码:

            public int PoochyPavy(int k)
            {       
                int Value = k;
                return k;
            }
             public int compareTo(Comparable nerd) //This method needs modification
                    {
                    PoochyPavy pp = (PoochyPavy) nerd;
                    int r = 0;

                    if (((Comparable)value).compareTo(6*pp.value)==0)
                        {
                        return r;
                        }   
                    else if (((Comparable)value).compareTo(6*pp.value)<0)
                        {
                        return r-1;
                        }
                    else if (((Comparable)value).compareTo(6*pp.value)>0)
                        {
                        return r+1;
                        }

                    return r;
            }
            //…other methods…
            public int value;

1 个答案:

答案 0 :(得分:0)

你能试试吗?您的构造函数似乎与函数定义没有正确的冲突。

  public class PoochyPavy implements Comparable<PoochyPavy> {
        public PoochyPavy(int k) {
        value = k;
        }

        public int compareTo(PoochyPavy nerd) // This method doesn’t follow the
                          // normal
                          // rules
        {
        PoochyPavy pp = nerd;
        int r = 0;

        if (((Integer) value).compareTo(6 * pp.value) == 0) {
            return r;
        } else if (((Integer) value).compareTo(6 * pp.value) < 0) {
            return r - 1;
        } else if (((Integer) value).compareTo(6 * pp.value) > 0) {
            return r + 1;
        }

        return r;
        }

        public int value;
    }