【发布时间】:2019-04-08 23:54:21
【问题描述】:
我需要初始化一个Class<Set<String>>类型的变量
当我使用 Set.class 时,它返回变量 Class<Set>
Class<Set> clazz = Set.class;
当我尝试时
Class<Set<String>> clazz = Set<String>.class;
我有一个编译错误。
【问题讨论】:
-
由于类型擦除(类型参数被编译器删除);以下是好的:
Class<Set<String>> clazz = (Class)Set.class; -
@Daniele,感谢您的解决方案。它可以工作,但会产生编译器警告。我正在尝试在没有警告的情况下找到解决方案。将对我的问题做出一些澄清。
-
您可以放心地添加
@SuppressWarnings({"unchecked", "rawtypes"})。也许看看这个 SO 问题:stackoverflow.com/questions/313584/… -
@SergeiTarasov :我没有看到一种优雅的方式来解决这里取消选中类型的问题。如果集合的初始化是由你的 API 的客户端完成的,也许你应该在你的一端添加一个额外的实现,它会在你端而不是客户端来抑制类型转换.....跨度>