当前位置: 首页 > 面试题库 >

Java-具有列表的泛型

夹谷野
2023-03-14
问题内容

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

@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;

    }

我正在这样使用

String s = inCache(String.class, title);

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

List<String> ipList = Util.inCache(List<String>.class, title);

问题是List<String>.class。我对Java非常陌生,我该怎么写?


问题答案:

您无法获得的类List<String>,在您的情况下,唯一的方法是:

List<String> ipList = (List<String>)Util.inCache(List.class, title);


 类似资料:
  • 问题内容: 好的,这是我的问题: 我有一个包含interfaces的列表-和扩展该接口的接口的列表:。我要设置。我不希望使用任何东西或会花费更多内存的东西,因为我正在做的事情已经非常耗费成本。我确实需要能够说。我已经尝试过,但是后来我无法将接口添加到列表中,只能将SubInterfaces 添加到列表中。有什么建议? 我希望能够做这样的事情: RecordKeeper类是包含接口列表的类(NOT

  • 如果我有这样的方法: 为什么要编译这个代码?为什么超级字符串与T兼容扩展了CharSequence

  • 问题内容: 所以我有一张地图: 我会像这样添加元素: 我有如下通用方法: 现在,这段代码可以很好地工作,并且没有编译器问题: 但是,当我尝试这样做时: 编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class) 这让我感到困惑…请帮助… 问题答案: 更改: 至 通过仅将类型声明为“ Class”,就失去

  • 问题内容: 我查看了Java Generics文档 ,发现了这段代码, 我可以理解,我们正在从中获取一个元素并将其设置为另一个。因此,编译器给出了一个错误。我的问题是,它是有道理的,当2列出了不同即这里列出了和是不同的。但是在上面的示例中,和是相同的列表。为什么编译器不够聪明才能看到呢?实施起来难吗? 编辑 :我知道我可以通过辅助方法或使用代替来修复它。只是想知道为什么编译器不为我做。 问题答案:

  • 如何在Java中正确建模包含泛型类型的多个实例的列表,每个实例不一定具有完全相同的具体类型参数(而是共享的公共根类型)。

  • 问题内容: Mockito提供: 如何避免警告,如果需要呢? 问题答案: 对于Java 8及更高版本,很简单: 对于Java 7及更低版本,编译器需要一些帮助。用途: