У меня такая проблема возникала в течении недели около полугода назад, потом ушла сама собой. Сегодня опять повторилась.
А так в целом если подождать, то условие через какое-то время подгружается, вроде.
А тем временем, в первой задаче в правильном решении предлагается просто перебрать все классы Collections и вернуть класс с совпадающим getSimpleName(). Вот как-то так... А класс видимо нужно найти самому в Collections.
Да, но тут все обсуждают через рефлексию вариант. И я считаю, что именно так надо делать. Если даже вы частично подсмотрите решение (как я), и не просто подсмотрите,а поймёте и разберетесь, то это будет только плюс. в отличие от того решения, которое предлагает JR
Мне интереснo как кто решил проблему с 3 пунктом, не совсем понимаю как выполнить.
3. Доступ по индексу запрещен - кидается исключение IndexOutOfBoundsException.
вызвать его через инвок, чтоб словить нужное исключение, не получилось
ну это если решать не глядя в решение
Перехватываем не IndexOutOfBoundsException, а InvocationTargetException e, которое блок try кинет после вызова метода method.invoke(constructor.newInstance(), 0);
И уже внутри этого блока проверяем, есть ли в сообщении об ошибке подстрока IndexOutOfBoundsException.
catch (InvocationTargetException e) {
if(e.getCause().toString().contains("IndexOutOfBoundsException")){
return clazz;
}
Остальные exception игнорируем
Вторая задача, конечно, потрепала нервы, зато рефлексия хорошо легла в голову.
В общем, совет для "особо одаренных", типа меня: во второй задаче речь не про мануал по коллекциям, дан утилитный классе, внутри него найти через рефлексию другой класс, который подходит под описание в задаче. Ищи утилитный класс в импорте...
Уровень 1
18 января 2021
вообще не трепала. Подсказка в импорте + переименовать метод на подходящий.
Collections.class.getDeclaredClasses(); - ???
constructor.setAccessible(true); - ???
isAssignableFrom - ???
Фиг бы я сам решил, без комментов. Насчёт первого надо было дать подсказку, что речь в задаче о Collections
если бы в коментах не подглядел вот эту строчку Class<?>[] clazz = Collections.class.getDeclaredClasses(); то весь день бы решал, я вот вообще не знал и ни где не попадалось что в классе Collections есть внутренние классы все то есть коллекции которые нам нужны и этим методом их очень просто можно достать. но я же погуглив узнал что с помощью стандартных библиотек не возможно (ну или если все пакеты перелопатить) выявить <? extends List> и в итоге набрел на Guava библиотеку org.reflection вообщем подгрузил применил нужный метод а он ошибку совместимости версий выдает, шел второй час танцев с бубнами и в итоге понял что проблему я эту навряд ли смогу решить со своим уровнем многие страдают из-за Guava, но и крутых штук там много я так понял. вообщем гуглить я ни хрена не умею и нет пока чуйки капать в нужную сторону( Ментора не хватает ой как, хочется уже работать
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ