In Java, the method best suiting your argument will always be called. Thus, autoboxing and implicit upcasting are only performed if there's no method which can be called without them.
The List interface specifies two remove methods:
- remove(Object o): removes the object at position 1
- remove(int index): removes the first occurrence of the specified element from this list