Собиратель типов
Реализуй метод getTкоторый принимает дин тип, и должен вернуть множество типов содержащихся во входном типе. Например, текущий метод main должен вывести на экран такие типы (ypes, порядок не обязателен): interface java.util.Map class java.util.concurrent.TimeUnit interface java.util.function.BiFunction class java.lang.Integer class java.lang.Long class java.lang.Boolean interface java.util.List class java.lang.String Сигнатуру метода getTypes не изменяй. Методы main() не участвует в тестировании.
Вот наша задача
public class Solution {
private Map<TimeUnit, BiFunction<Integer, Long, Map<Boolean, List<String>>>> field;
public static void main(String[] args) throws Exception {
getTypes(Solution.class.getDeclaredField("field").getGenericType()).forEach(System.out::println);
}
public static Set<Type> getTypes(Type type) {
//напишите тут ваш код
return null;
}
}
Из нее я понимаю что мы получает только Type type
Если делаем
System.out.println(type);
java.util.Map<java.util.concurrent.TimeUnit, java.util.function.BiFunction<java.lang.Integer, java.lang.Long, java.util.Map<java.lang.Boolean, java.util.List<java.lang.String>>>>
то что получили выше
и он очень похож на какой то вложенный массив который мне надо вытащить
Отлично я вижу какие класса но они в какой то страной иерархии
Так понял что они вот в этой иреархии
Map<TimeUnit, BiFunction<Integer, Long, Map<Boolean, List<String>>>>
Значить пробую вытащить массив
type.
по выборки там нет не какого массива просто стандартные методы обжект
Значит я должен идти через класс типа рефлекися
type.getClass().
вот тут получается куча методов
Я должен получить массив чего то от класса
тут херова туча методов и прочей ерунды я пытаюсь найти массив что выдает вобше массив чегото и как понимаю в моем методе не должнобыть ултра специолизированого названия
type.getClass().getGenericInterfaces();
не подойдет тут что то про интерфейс хотя посомтрим что внутри
Type[] genericInterfaces = type.getClass().getGenericInterfaces();
а внутри это
interface java.lang.reflect.ParameterizedType
помогло нам нет не очень
И поэтому прошу просто 1 намек вот какой следующий шаг Я должен подумать
Сергей
66 уровень
к задаче 3407 вопрос Рефлексия
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
28 апреля 2022, 12:19
Похоже тут просто надо создать правильный Set
0
СергейExpert
28 апреля 2022, 13:08
Да в него что то нужно засунуть но вот что type.getClass(). Через объект мы можем обратится к к классу и ко всем его полям. но что тут нужно искать?
0