我有这样的东西:
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[]
}
}
我知道 Integer
和 int
是不同的,因为 int
是原始的,我也知道我不能使用 出于同样的原因,将 int
作为泛型。
还有,是否有一种简单的方法来更改泛型以便我可以返回 int[]
?
最佳答案
仅 Wrapper 类支持泛型。您不能将它用于原始类型。
它允许原始类型,但它使用自动装箱。
Java 中的泛型完全是编译时构造 - 编译器将所有泛型的使用转换为正确类型的转换。
为什么仅 Wrapper 类支持泛型? : 任何用作泛型的东西都需要可以转换为对象。原始类型不能转换为对象。这就是泛型不支持它的原因。
编辑:
在 Java 10 中,有一个泛型支持原语的提议,但现在不可用。 (PeterLawrey 在评论中提供的信息)
关于Java 泛型返回 int[] 而不是 Integer[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36262889/