Good Question!
You're suggestion that #3 should be cast to #1 does seem to make sense, because it has one less auto-boxing to do.
This is probably the reasoning behind Java's decision to give you an error instead of picking the method with the least boxing involved:
- This situation is rare.
- Figuring out which method to use for auto-boxing could be expensive*.
- The logic behind which method to choose could be too subjective.
- Therefore, in this case, Java forces you to not be ambiguous.
*The accepted answer to the question linked to by Sotirios gives some insight into why it might by too expensive to be worth it.