Java Generics AnyType, как мне разрешить вызов любого метода? - PullRequest
1 голос
/ 21 марта 2019

Дано:

public<?> void methodName(? input){
  var something = ?.GetItNow();
}

У нас есть тонна классов, которые были автоматически сгенерированы из WSDL.Почти все они имеют одинаковые методы, но нет способа заставить их реализовать интерфейс для тех же методов.Предположим, что все эти разные классы имеют метод с именем GetItNow ().У меня вопрос, как мне настроить универсальный метод, чтобы позволить приведенному выше коду работать?

При использовании "?"я должен всегда использовать ключевое слово "extends"?Если да, то как мне расширить любой объект, чтобы я не увидел ошибок компиляции, что «метод не существует».

Обратите внимание, что приведенный выше код приведен только для иллюстрации и ничего не делает (пока).

1 Ответ

2 голосов
/ 21 марта 2019

Вы можете использовать отражение для доступа к методу, если имя известно заранее.

public void methodName(Object input){
    try{
        Method method = input.getClass().getMethod("GetItNow");
        RETURN_TYPE returnValue = (RETURN_TYPE)method.invoke(input);
    }catch(Exception e){
        throw new RuntimeException("Error while invoking method",e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...