Have a look at the implementation of the Arrays.asList method:
"T..." is a shorthand for actually passing in a fixed sized array "T". So we "create a fixed size array" and simply pass it to the constructor of an ArrayList. That array is then simply stored within the ArrayList internally.
But because an ArrayList "is-a" List (it implements that interface) it's okay that the asList method returns only a reference to the List interface.