gpt4 book ai didi

java - 获取通用集合的类而不使用实例

转载 作者:行者123 更新时间:2023-12-01 14:53:49 25 4
gpt4 key购买 nike

我想做如下的事情:

public class Test {
public static void main(String[] args) {
Map<String, Set<String>> map = new HashMap<String, Set<String>>();
map.put("key1", new HashSet<String>());

Set<String> theSet = getObjectAs(map, ***Set<String>.class***);
}

private static <T> T getObjectAs(Object object, Class<T> cls){
return cls.cast(object);
}
}

但这不起作用,我无法使用 .class 从该 Set 中获取类对象(请参见粗体),因为它是参数化的。

我想让该方法返回一个 Set,其类型可能会有所不同(它并不总是一组字符串),但我知道并且可以作为参数给出。

还有其他方法可以做这样的事情吗?

最佳答案

您可以做到这一点的唯一方法是接受您需要进行不安全的强制转换。不存在Set<String>.class这样的东西。 ,因为它在各个方面都完全等于 Set.class .

您唯一可以做的另一件事是使用某个库中的“通用类”类型之一,例如 Guava's TypeToken ,但这不会让您绕过不安全强制转换的需要——它只会让您用泛型指定它。 Guava 的 TypeToInstanceMap 工作原理类似。

关于java - 获取通用集合的类而不使用实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14510319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com