You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现含leiaSuurem方法的泛型类以找出两个整数的较大值

修正你的泛型比较类代码

嘿,我瞅了下你写的代码,有几个小问题导致它跑不起来,我帮你一步步修正哈:

原代码里的问题点

  • 泛型声明位置错误:你把泛型<T extends Comparable<T>>放在了方法返回类型int后面,这不符合Java语法。而且方法返回类型写了int,但你要返回的是泛型类型T,这里也错了。
  • main方法不是static:Java程序的入口方法main必须是static的,不然JVM找不到它来启动程序。
  • 冗余的判断逻辑:你写了两个if判断,其实只需要一个就够了——先假设x是最大值,然后如果y比它大,就把max换成y,没必要再判断一次x和y的大小。
  • 方法调用问题:如果leiaSuurem不是静态方法,在main里直接调用会报错,因为main是静态上下文,不能直接调用非静态方法。

修正后的代码方案一:泛型类

public class Vordleja<T extends Comparable<T>> { 
    public T leiaSuurem(T x, T y){ 
        T max = x; 
        if(y.compareTo(max) > 0) {
            max = y;
        }
        return max; 
    } 

    public static void main(String[] args) { 
        // 创建泛型类实例,指定类型为Integer
        Vordleja<Integer> vordleja = new Vordleja<>();
        System.out.println("Largest ( 3, 4 ) element is : " + vordleja.leiaSuurem(3, 4)); 
    } 
}

修正后的代码方案二:静态泛型方法(更灵活)

如果不想把整个类做成泛型,把leiaSuurem改成静态泛型方法会更方便,不用创建类实例:

public class Vordleja { 
    // 泛型声明放在返回类型前面,这是静态泛型方法的正确写法
    public static <T extends Comparable<T>> T leiaSuurem(T x, T y){ 
        T max = x; 
        if(y.compareTo(max) > 0) {
            max = y;
        }
        return max; 
    } 

    public static void main(String[] args) { 
        // 直接调用静态方法
        System.out.println("Largest ( 3, 4 ) element is : " + leiaSuurem(3, 4)); 
        // 还可以用来比较其他实现了Comparable的类型,比如字符串
        System.out.println("Largest ( \"apple\", \"banana\" ) element is : " + leiaSuurem("apple", "banana")); 
    } 
}

解释下关键修改

  1. 把泛型声明<T extends Comparable<T>>移到了正确的位置:如果是类泛型,就放在类名后面;如果是静态方法泛型,就放在方法的返回类型前面。
  2. 把方法返回类型从int改成了T,这样才能返回泛型类型的最大值。
  3. 给main方法加上了static修饰符,让它成为合法的程序入口。
  4. 简化了判断逻辑,去掉了冗余的if语句,让代码更简洁高效。

内容的提问来源于stack exchange,提问作者Vlad Paskevits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:27:21