Тоже самое возникает для конструктора java.lang.NoSuchMethodException: java.util.Collections$CopiesList.<init>().
В массиве остаются 3 класса и у всех есть метод get
class java.util.Collections$CopiesList
class java.util.Collections$SingletonList
class java.util.Collections$EmptyList
package com.javarush.task.task36.task3602;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/*
Найти класс по описанию
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getExpectedClass());
}
public static Class getExpectedClass() {
;
Class clazz;
Class[] classes = Arrays.stream(Collections.class.getDeclaredClasses())
.filter(c->List.class.isAssignableFrom(c)
&& Modifier.isStatic(c.getModifiers())
&& Modifier.isPrivate(c.getModifiers()))
.toArray(Class[]::new);
try {
for (Class c:classes
) {
clazz=c;
Method method = c.getDeclaredMethod("get");
Constructor constructor = c.getDeclaredConstructor();
constructor.setAccessible(true);
List list = (List) constructor.newInstance();
list.get(0);
}
}
catch (IndexOutOfBoundsException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
}