哇咔咔...{} 2021-12-01 09:44 采纳率: 88.9%
浏览 47
已结题

Java 排序 泛型 为什么会报错?

package com.homework;
import java.util.Scanner;
public class experiment13_1{  
  public static void main(String[] args) {
        Scanner scan= new Scanner(System.in);
        System.out.println("请分别输入x、y:");
        int x=scan.nextInt(); 
       int y=scan.nextInt();  
      System.out.println("最大值为:"+max(x,y));  
      int[] a={3,2,4,8,9,10,7};        int[] arr=sort(a);    }
    public static <T extends Comparable> T max(T x,T y){//最大值        
if(x.compareTo(y)>0) 
           return x;  
      else 
           return y;   
 }  
  public static <T extends Comparable> T[] sort(T[] x){//排序 
       int k=x.length; 
       for(int i=0;i<k;i++){  
          for(int j=0;j<i-2;j++){ 
               if(x[j].compareTo(x[j+1])>0){       
             T temp=x[j];    
                x[j]=x[j+1];         
           x[j+1]=temp;          
      }        
    }     
   }     
   return x;    
}}

为什么MAX(x, y)不报错,而sort(a)报错

img

  • 写回答

5条回答 默认 最新

  • 冰思雨 2021-12-01 15:20
    关注

    泛型使用不当:
    前面泛型声明中, ,表明 T 的类型是 Comparable 的子类,
    实际使用的时候,传递的参数类型是 int[] a ,这个 int 类型,是原始类型。
    原始类型 不具备对象属性,不继承和实现任何类和接口。
    楼主可以换成 原始类型 的封装类型 试一试。
    比如: Integer[] a;

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

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 展开全部

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题