Java 尝试使用compareTo()对数组排序,但出现错误
嗨,Java 尝试使用compareTo()对数组排序,但出现错误,java,arrays,Java,Arrays,嗨, 我试着根据狗的大小来缩短狗的物体。我将supermostclass的对象x向下转换为Dog类,但不知道为什么java在运行时执行try-and-catch块,说Dog不能被转换为java.lang.Comparable如果它不知道如何比较两个Dog以确定哪一个会首先出现,您希望数组排序(obj)如何工作Dog应该实现Comparable您已经指定了compareTo方法,但是您没有声明要实现Comparable的Dog类。此外,一旦您这样做,您需要将compareTo的s参数声明为Dog您
我试着根据狗的大小来缩短狗的物体。我将supermostclass的对象x向下转换为Dog类,但不知道为什么java在运行时执行try-and-catch块,说Dog不能被转换为java.lang.Comparable如果它不知道如何比较两个
Dog
以确定哪一个会首先出现,您希望数组排序(obj)
如何工作Dog
应该实现Comparable
您已经指定了compareTo
方法,但是您没有声明要实现Comparable
的Dog
类。此外,一旦您这样做,您需要将compareTo
的s
参数声明为Dog
您的Dog类必须实现接口Comparable
您必须使用implements
关键字以及实现的接口的名称(Comparable
),您还可以抓住机会推断泛型参数
:
(注意这里的Dog type参数!)您忘记在Dog类中实现可比较的接口。你的狗课应该如下所示
@Override
public int compareTo(Dog s){
...
类狗实现可比性{
整数大小;
字符串名;
//部署构造函数
Dog(字符串名称、整数大小){
this.name=名称;
这个。大小=大小;
}
//正在部署用于打印的toString()
公共字符串toString(){
返回名称+“/”+大小;
}
//部署compareTo()方法并为int值重写它
公共int比较(狗s){
返回this.size-s.size;
}
}
public class Dog implements Comparable<Dog>{
int size;
String name;
...
@Override
public int compareTo(Dog s){
...
class Dog implements Comparable<Dog> {
int size;
String name;
// Deploying a constructor
Dog(String name, int size) {
this.name = name;
this.size = size;
}
// Deploying toString() for printing
public String toString() {
return name + "/" + size;
}
// Deploying compareTo() method and overriding it for int value
public int compareTo(Dog s) {
return this.size - s.size;
}
}