哇咔咔...{} 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 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多