I have a class that extends the LinkedList class. Here's an excerpt of the code:
class SortedList<Integer> extends LinkedList<Integer> {
int intMethod(Integer integerObject){
return integerObject;
}
}
This is expected to return the auto-unboxed int value. But for some reason, the compiler throws an error that says that the types are incompatible and that the required type was int and the type found was Integer. This works in a different class perfectly fine! What gives? :(
This is because you have <Integer>
after SortedList
.
Usually you use T
for type parameters: class SortedList<T>
, but you used Integer
instead. That is, you made Integer
a type parameter (which shadows the java.lang.Integer
).
Your class, as it stands, is equivalent to
class SortedList<T> extends LinkedList<T> {
int intMethod(T integerObject){
return integerObject; // <-- "Cannot convert from T to int"
}
}
Remove the type parameter and it works just fine:
class SortedList extends LinkedList<Integer> {
int intMethod(Integer integerObject){
return integerObject;
}
}