Получение типа интерфейса в Java - PullRequest
0 голосов
/ 01 мая 2020

В настоящее время я изучаю Java на Hyperskill, есть один вопрос, который мне нужна помощь и разъяснения.

Ссылка на этот вопрос здесь .

Вам необходимо реализовать метод getComparatorType(Class) в ComparatorInspector классе. Метод должен проверить предоставленный класс и вернуть объект Type, соответствующий параметру типа, который параметризует интерфейс Comparable, реализуемый классом. Рассмотрим пример:

class MyInt implements Comparable<Integer> {
    // Implementation omitted 
}

// Method to implement
Type type = ComparatorInspector.getComparatorType(MyInt.class);

System.out.println(type.getTypeName());
// prints: java.lang.Integer since MyInt implements Comparable with Integer parameter type

Метод должен:

  1. Параметр типа возврата для реализуемого класса интерфейса Comparable
  2. Возвращать ноль, если в интерфейсе Comparable нет параметра типа
  3. Не должно выдавать предупреждения во время компиляции
  4. Ошибка времени компиляции должна возникать, если класс, не реализующий Comparable, предоставляется в качестве входного значения
  5. Никаких предупреждений «rawtype» не должно оставаться или быть Подавленный
  6. Метод getComparatorType должен быть универсальным. При необходимости вы можете исправить сигнатуру метода.

Мой код пока:

public static <T extends Comparable<?>> Type getComparatorType(Class<T> clazz) {
        // Add implementation
        // Print type name
        if (clazz.getGenericInterfaces().length == 0) {
            return null;
        }
        Type t = null;
        Type[] types = clazz.getGenericInterfaces();
        for (Type type : types) {
            if (type instanceof ParameterizedType) {
                t = ((ParameterizedType) type).getActualTypeArguments()[0];
            }
        }
        return t;
    }

Я думаю, что единственный проблема у меня здесь является тип параметра в сигнатуре метода. Насколько я понимаю, тип в сигнатуре метода будет использоваться в параметре этого метода, и этот тип T должен расширять Comparable. Но есть ошибка в сигнатуре метода, надеюсь, кто-то может помочь. Я высоко ценю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...