拆箱问题

use*_*037 3 java autoboxing unboxing

我有一个扩展LinkedList类的类.这是代码的摘录:

class SortedList<Integer> extends LinkedList<Integer> {
      int intMethod(Integer integerObject){
          return integerObject;
      }
}
Run Code Online (Sandbox Code Playgroud)

预计会返回自动取消装箱的int值.但由于某种原因,编译器抛出一个错误,指出类型不兼容,并且所需类型为int,找到的类型为Integer.这在一个完全不同的班级工作!是什么赋予了?:(

aio*_*obe 10

这是因为你有<Integer>SortedList.

通常T用于类型参数:class SortedList<T>,但您使用的是Integer.也就是说,你创建Integer了一个类型参数(阴影java.lang.Integer).

你的班级,就目前而言,相当于

class SortedList<T> extends LinkedList<T> {
      int intMethod(T integerObject){
          return integerObject;         // <--  "Cannot convert from T to int"
      }
}
Run Code Online (Sandbox Code Playgroud)

删除类型参数,它工作得很好:

class SortedList extends LinkedList<Integer> {
      int intMethod(Integer integerObject){
          return integerObject;
      }
}
Run Code Online (Sandbox Code Playgroud)