import java.util.*; import org.jetbrains.annotations.Contract; public class CollectionToArray { String[] testEmpty() { List list = new ArrayList<>(); return list.toArray(new String[0]); } void test(List obj) { if (obj.isEmpty()) return; Object[] objects = obj.toArray(new Object[0]); if (objects.length == 0) {} if (objects.length == 1) {} Object[] objects2 = obj.toArray(new Object[obj.size()]); if (objects2 == null) {} if (objects2.length == 0) {} String[] s = (String[]) objects; } void test1(List list) { Object[] array = list.toArray(new Object[15]); if (array.length < 15) {} if (array.length < 16) {} } void testModify(Collection c) { Object[] arr = new Object[10]; arr[0] = null; if (arr[0] == null) {} int size = c.size(); Object[] objects = c.toArray(arr); if (arr[0] == null) {} // could be overwritten if (size == c.size()) {} } void test2(List list) { if (list.isEmpty()) return; Object[] objects = list.toArray(); if (objects.length == 0) {} } @SuppressWarnings({"unchecked", "rawtypes"}) void test2(Set set) { Integer[] arr = (Integer[]) set.toArray(new Number[0]); } void testExact(Set set) { if (set.size() == 10) { Object[] arr = set.toArray(new Object[15]); if (arr.length == 15) {} } if (set.size() == 15) { Object[] arr = set.toArray(new Object[10]); if (arr.length == 15) {} } } void testPresizedArray(List list) { if (list.size() == 10) { Object[] data = list.toArray(new Object[list.size()]); if (data.length == 10) {} } } void testPresizedArray2(List list) { Object[] data = list.toArray(new Object[list.size()]); if (list.size() == data.length) {} } void testRaw(java.util.List l) { final String[][] ss = (String[][]) l.toArray(new Number[l.size()]); } @Contract(pure = true) String[] testAnyArray(List list, String[] arr) { return list.toArray(arr); } @Contract(pure = true) String[] testEmptyArray(List list, String[] arr) { assert arr.length == 0; return list.toArray(arr); } void testSizeEquality(List list, int x) { String[] arr = list.toArray(new String[0]); if (x == 1 && list.get(arr.length).isEmpty()) { } if (x == 2 && arr[list.size()].isEmpty()) { } if (list.isEmpty()) return; if (arr.length == 0) return; } void testUntyped(List list) { String[] strings = (String[])list.toArray(); } }