gpt4 book ai didi

Java 泛型方法头

转载 作者:行者123 更新时间:2023-11-30 04:03:05 25 4
gpt4 key购买 nike

假设我有一些方法 header ..

public static <E> void myMethodName(E[], Comparator<E> comparator).

为什么我在尝试调用时会收到类型错误:

myMethodName(int[], 
new Comparator<Integer>() {
public int compare(Integer e1, Integer e2) { return e1 - e2; }
}
);

有什么想法吗?

最佳答案

首先,让我们看一些事情。

  • 你有一个泛型方法(虽然它缺少一个变量,但我会忽略它),它需要一个泛型类型。 Java 根据数组的类型为 int 这一事实推断该方法的类型绑定(bind)到 Integer

  • 您有一个原始的 int[],您将其作为第一个参数提供。在正式签名中,它的类型绑定(bind)为Integer

这里的问题是:int[]等价于Integer[]。它们是两个完全不同的对象(因为它们都是数组而不是可以自动装箱的对象)。

避免该问题的正确方法是使用 Integer[] 代替。不过,您放置在数组内的元素将根据自动装箱和转换的规则自动装箱。

关于Java 泛型方法头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21472141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com