Доступ к универсальному аргументу возвращаемого типа - PullRequest
2 голосов
/ 04 августа 2011

Возможно ли получить доступ к универсальному аргументу в следующей строке?

 public List<StoryLikeRef> getLikes() throws IOException

Я имею в виду, отражением получить StoryLikeRef из типа возвращаемого значения?

Спасибо

1 Ответ

10 голосов
/ 04 августа 2011

Да, вы можете, предполагая, StoryLikeRef - это конкретный тип (а не сам параметр типа).Используйте Method.getGenericReturnType, чтобы получить Type.Пример кода:

import java.lang.reflect.*;
import java.util.*;

public class Test {

    public List<String> getStringList() {
        return null;
    }

    public List<Integer> getIntegerList() {
        return null;
    }

    public static void main(String[] args) throws Exception {
        showTypeParameters("getStringList");
        showTypeParameters("getIntegerList");
    }

    // Only using throws Exception for sample code. Don't do
    // this in real life.
    private static void showTypeParameters(String methodName)
        throws Exception {
        Method method = Test.class.getMethod(methodName);
        Type returnType = method.getGenericReturnType();
        System.out.println("Overall return type: " + returnType);
        if (returnType instanceof ParameterizedType) {
            ParameterizedType type = (ParameterizedType) returnType;
            for (Type t: type.getActualTypeArguments()) {
                System.out.println("  Type parameter: " + t);
            }
        } else {
            System.out.println("Not a generic type");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...