Arrays.asList
wraps the original array. It doesn't copy the data. Collections.unmodifiableList
also wraps the original list rather than copying the data.
That's why you're returning an unmodifiableList
wrapper, because otherwise, changes made to the list returned by Arrays.asList
would write through to the original private array.