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;
  }
}