Monin Liao 2023-01-14 10:54 采纳率: 71.4%
浏览 13
已结题

Java实现泛型接口

package com.example;

import java.util.Arrays;

public class Main {
  
  public static void main(String[] args) {
    MyClass[] ms = {
      new MyClass("Monin",119),
      new MyClass("Annie",120),
      new MyClass("David",99)
    };
    Arrays.sort(ms);
    System.out.println(Arrays.toString(ms));
  }
}

interface Comparable<T> {
  public int compareTo(T o);
}

class MyClass implements Comparable<MyClass> {
  private String name;
  private int num;
  
  public MyClass(String name, int num) {
    this.name = name;
    this.num = num;
  }
  
  public int compareTo(MyClass m) {
    return this.name.compareTo(m.num);
  }
  
  public String toString() {
    return name + ":" + num;
  }
}

报错:

java.lang.ClassCastException: com.example.MyClass cannot be cast to java.lang.Comparable
    at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
    at java.util.Arrays.sort(Arrays.java:1239)
    at com.example.Main.main(Main.java:13)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.duy.android.compiler.java.Java.run(Unknown Source:335)
    at com.duy.ide.javaide.run.activities.ExecuteActivity.executeDex(Unknown Source:42)
    at com.duy.ide.javaide.run.activities.ExecuteActivity.exec(Unknown Source:19)
    at com.duy.ide.javaide.run.activities.ExecuteActivity.access$100(Unknown Source:0)
    at com.duy.ide.javaide.run.activities.ExecuteActivity$1.run(Unknown Source:8)
    at java.lang.Thread.run(Thread.java:929)

怎么回事?如何改?

  • 写回答

2条回答 默认 最新

  • pzzhao 2023-01-14 11:16
    关注

    你的MyClass 需要实现的是java.lang 包下的Comparable接口,而不是你自定义的Comparable接口,把你自定义的这个 Comparable 接口删掉,重新导包就好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月14日
  • 已采纳回答 1月14日
  • 创建了问题 1月14日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行