На самом деле массивы все еще имеют одно преимущество перед коллекциями / списками. Благодаря тому, что Java реализует Generics посредством стирания типов, у вас не может быть двух методов, которые принимают Collections в качестве аргументов, но отличаются только универсальным типом Collection.
Ex:
public void doSomething(Collection<String> strs) { ... }
public void doSomething(Collection<Integer> ints) { ... }
Два вышеупомянутых метода не будут компилироваться, потому что компилятор javac использует стирание типа и, следовательно, не может передать информацию о типе в JVM. JVM увидит только два метода, которые принимают коллекцию в качестве аргумента.
В вышеприведенных случаях лучший обходной путь - заставить методы принимать массивы в качестве аргументов и использовать метод toArray () класса Collection / List при передаче им аргументов. Если вы все еще хотите использовать Collection / List внутри описанных выше методов, просто используйте метод java.util.Arrays.asList (), чтобы вернуть ваш List.
Ex:
public void doSomething(String[] strs) {
List<String> strList = Arrays.asList(strs);
...
}
public void doSomething(Integer[] ints) {
List<Integer> intList = Arrays.asList(ints);
...
}
public static void main(String[] args) {
List<String> strs = new ArrayList<String>();
List<Integer> ints = new ArrayList<Integer>();
obj.doSomething(strs.toArray());
obj.doSomething(ints.toArray());
}