拆箱问题

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

class SortedList extends LinkedList { int intMethod(Integer integerObject){ return integerObject; } } 

这应该返回自动取消装箱的int值。 但由于某种原因,编译器抛出一个错误,指出类型不兼容,并且所需类型为int,找到的类型为Integer。 这在另一个class级完美无缺! 是什么赋予了? 🙁

这是因为您在SortedList之后有

通常使用T作为类型参数: class SortedList ,但您使用的是Integer 。 也就是说,你使Integer成为一个类型参数(它会影响java.lang.Integer )。

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

 class SortedList extends LinkedList { int intMethod(T integerObject){ return integerObject; // <-- "Cannot convert from T to int" } } 

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

 class SortedList extends LinkedList { int intMethod(Integer integerObject){ return integerObject; } } 

问题是您已将Integer声明为SortedList类的generics类型参数。 因此,当您将Integer称为intMethod方法的参数时,这意味着类型参数,而不是我怀疑您的意思的java.lang.Integer类型。 我想你想要:

 class SortedList extends LinkedList { int intMethod(Integer integerObject){ return integerObject; } } 

这样, SortedList总是一个整数列表,我怀疑这是你想要实现的。 如果您确实想让SortedList成为generics类型,您可能需要:

 class SortedList extends LinkedList { int intMethod(Integer integerObject){ return integerObject; } }