拆箱问题
我有一个扩展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; } }