Java cannot autobox an array, only individual values. I would suggest changing your method signature to
public void doSomething(Integer... args)
Then the autoboxing will take place when calling doSomething
, rather than trying (and failing) when calling Arrays.asList
.
What is happening is Java is now autoboxing each individual value as it is passed to your function. What you were trying to do before was, by passing an int[]
to Arrays.asList()
, you were asking that function to do the autoboxing.
But autoboxing is implemented by the compiler -- it sees that you needed an object but were passing a primitive, so it automatically inserted the necessary code to turn it into an appropriate object. The Arrays.asList()
function has already been compiled and expects objects, and the compiler cannot turn an int[]
into an Integer[]
.
By moving the autoboxing to the callers of your function, you've solved that problem.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…