Как проверить, соответствует ли тип возвращаемого метода методу List <String>

Какой самый простой способ проверить (используя отражение), имеет ли данный метод (т.е. экземпляр java.lang.Method) тип возвращаемого значения, который можно безопасно привести к List <String>?

Рассмотрим этот фрагмент:

public static class StringList extends ArrayList {}

public List method1();
public ArrayList method2();
public StringList method3();

Все методы 1, 2, 3 соответствуют требованию. Это'Это довольно легко проверить для метода method1 (через getGenericReturnType (), который возвращает экземпляр ParameterizedType), но для методов 2 и 3 это 'не так очевидно. Я предполагаю, что, пройдя все getGenericSuperclass () и getGenericInterfaces (), мы можем подойти довольно близко, но я нечтобы увидеть, как соответствовать TypeVariable в списке <E> (что происходит где-то в интерфейсах суперкласса) с фактическим параметром типа (то есть, где это E соответствует String).

Или, может быть, есть совершенно другой (более простой) способ, который я пропускаю?

РЕДАКТИРОВАТЬ: Для тех, кто занимается этим, есть метод method4, который также выполняет требование и показывает еще несколько случаев, которые необходимо изучить:

public interface Parametrized {
    T method4();
}

Ответы на вопрос(4)

Ваш ответ на вопрос