我正在尝试修改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;
答案 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;
}