Java 泛型返回 int[] 而不是 Integer[]

标签 java generics

我有这样的东西:

public interface A<I>{
    public I[] returnAll();
}

public class B implements A<Integer>{
    public Integer[] returnAll(){

        return new int[] //return Type has to be Integer[]

    }
}

我知道 Integerint 是不同的,因为 int 是原始的,我也知道我不能使用 出于同样的原因,将 int 作为泛型。

还有,是否有一种简单的方法来更改泛型以便我可以返回 int[]

最佳答案

仅 Wrapper 类支持泛型。您不能将它用于原始类型。

它允许原始类型,但它使用自动装箱。

Java 中的泛型完全是编译时构造 - 编译器将所有泛型的使用转换为正确类型的转换。

为什么仅 Wrapper 类支持泛型? : 任何用作泛型的东西都需要可以转换为对象。原始类型不能转换为对象。这就是泛型不支持它的原因。

编辑:

在 Java 10 中,有一个泛型支持原语的提议,但现在不可用。 (PeterLawrey 在评论中提供的信息)

关于Java 泛型返回 int[] 而不是 Integer[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36262889/

相关文章:

java - 为什么 Selenium 在点 (.) 字符后面附加一个反斜杠,对于其中包含 (.) 的 ID 属性的值产生 (\.)

c# - 使用 Vector2 和 Vector2 作为通用约束?

c# - 为什么不能在泛型中要求运算符重载

java - 如何制作按字母顺序对集合进行排序的通用函数

java - PDF Java 打印 : job sent in printer jobs queue but nothing prints

java - -bash : syntax error near unexpected token '(' when running Java program from command line

java - JDBC 未执行 SHOW DATABASES 命令

java - 如何使用媒体存储获取所有音频文件

java - 如何在java中开始使用泛型类型

java - Java 函数式接口(interface)中的类型安全