Java - 带列表的泛型

Mai*_*ein 2 java generics

我为缓存编写了一个函数来检索特定对象.这样我就不需要施放它了.

@SuppressWarnings("unchecked")
    public static <T> T inCache(Class<T> obj, String token) {

        Object cacheObj = Cache.get(token);
        if (cacheObj != null) {

            if (obj.isAssignableFrom(cacheObj.getClass())) {
                return (T) cacheObj;
            }
        }
        return null;

    }
Run Code Online (Sandbox Code Playgroud)

我这样用它

String s = inCache(String.class, title);
Run Code Online (Sandbox Code Playgroud)

但是现在我的缓存中有一个字符串列表,我不能像这样使用它

List<String> ipList = Util.inCache(List<String>.class, title);
Run Code Online (Sandbox Code Playgroud)

问题是List<String>.class.我是java的新手,我该怎么写呢?

Joe*_*Joe 6

java中有一个叫做类型擦除的概念.由于遗留原因,像List这样的东西只是一个列表.它不记得它是运行时的字符串列表.你应该写List.class.

然后,您可以在迭代时指定List中的对象类型.