Java Generics - <int>到<Integer>

sgo*_*les 13 java generics type-erasure primitive-types

在学习Java Generics的过程中,我陷入了困境.
它写成" Java Generics仅适用于Objects而不适用于原始类型 ".

例如

 Gen<Integer> gen=new Gen<Integer>(88);     // Works Fine ..  
Run Code Online (Sandbox Code Playgroud)

但是,使用int,char等原始类型...

 Gen<int> gen=new Gen<int>(88) ;    // Why this results in compile time error 
Run Code Online (Sandbox Code Playgroud)

我的意思是说,因为java泛型确实具有自动装箱和拆箱功能,那么当我们为我们的类声明特定类型时,为什么不能应用此功能呢?

我的意思是,为什么Gen<int>不自动转换为 Gen<Integer>

请帮我清除这个疑问.
谢谢.

mit*_*een 9

Autoboxing并没有说你可以使用int而不是Integer.自动装箱自动化装箱和拆箱过程.例如,如果我需要将一些原始int存储到集合中,我不需要手动创建wrpper对象.Java编译器一直在关注它.在上面的示例中,您将实例化一个Integer类型的泛型对象.这个泛型对象仍然可以正常使用int,但将int声明为泛型类型是错误的.泛型只允许对象引用而不是基元.

  • 如果我没弄错的话,这实际上是由编译器处理的,而不是JVM. (4认同)