@Ignore("For development only") @Test @SuppressWarnings({"UnusedDeclaration"}) public void testGenerify() { List list = Collections.singletonList("foo"); @SuppressWarnings({"unchecked"}) Set set = new HashSet(list); List<String> strs0 = CollectionUtil.generify(list, String.class); List<Object> objs0 = CollectionUtil.generify(list, String.class); // List<String> strs01 = CollectionUtil.generify(list, Object.class); // Not okay try { List<String> strs1 = CollectionUtil.generify(set, String.class); // Not ok, runtime CCE unless set is null } catch (RuntimeException e) { e.printStackTrace(); } try { ArrayList<String> strs01 = CollectionUtil.generify(list, String.class); // Not ok, runtime CCE unless list is null } catch (RuntimeException e) { e.printStackTrace(); } Set<String> setstr1 = CollectionUtil.generify(set, String.class); Set<Object> setobj1 = CollectionUtil.generify(set, String.class); try { Set<Object> setobj44 = CollectionUtil.generify(list, String.class); // Not ok, runtime CCE unless list is null } catch (RuntimeException e) { e.printStackTrace(); } List<String> strs2 = CollectionUtil.<List<String>, String>generify2(list); List<Object> objs2 = CollectionUtil.<List<Object>, String>generify2(list); // List<String> morestrs = CollectionUtil.<List<Object>, String>generify2(list); // Not // ok try { List<String> strs3 = CollectionUtil.<List<String>, String>generify2( set); // Not ok, runtime CCE unless set is null } catch (RuntimeException e) { e.printStackTrace(); } }