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

泛型方法与有界类型参数:如何调用指定泛型方法

调用泛型方法countGreaterThan的正确方式

请问如何调用如下泛型方法:

public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
    int count = 0;
    for (T e : anArray)
        if (e.compareTo(elem) > 0)
            ++count;
    return count;
}

我已尝试多种调用方式但均未成功。因身处国内PC被封禁,只能通过手机打字,无法输入更多内容。

别担心,这个泛型方法的核心要求是类型T必须实现Comparable<T>接口——也就是这个类型得能和自己做比较,Java里像Integer、String、Double这些常用类型都自带这个实现,调用起来其实很直接,给你几个具体的例子:

1. 用Integer数组调用

public class Main {
    public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
        int count = 0;
        for (T e : anArray)
            if (e.compareTo(elem) > 0)
                ++count;
        return count;
    }

    public static void main(String[] args) {
        // 定义Integer数组
        Integer[] nums = {1, 3, 5, 7, 9};
        // 编译器会自动推断类型T为Integer,直接调用即可
        int result = countGreaterThan(nums, 5);
        System.out.println(result); // 输出2,因为7和9都大于5
    }
}

2. 用String数组调用

public static void main(String[] args) {
    String[] words = {"apple", "banana", "cherry", "date"};
    // 编译器自动推断T为String
    int result = countGreaterThan(words, "banana");
    System.out.println(result); // 输出2,因为cherry和date的字典序比banana大
}

3. 手动指定泛型类型(可选场景)

如果编译器没法自动推断类型(这种情况很少见),你也可以手动指定T的类型,写法是在方法名前加<类型>:

int result = Main.<Integer>countGreaterThan(nums, 5);

自定义类型调用的前提

要是你想用自己写的类来调用这个方法,那这个自定义类必须实现Comparable<自定义类>接口,重写compareTo方法来定义比较规则,比如:

class Person implements Comparable<Person> {
    private int age;

    public Person(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(Person other) {
        // 按年龄大小比较
        return Integer.compare(this.age, other.age);
    }
}

// 调用示例
Person[] people = {new Person(20), new Person(30), new Person(40)};
int result = countGreaterThan(people, new Person(25));
System.out.println(result); // 输出2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:23:14