List<? super Integer> integers = new ArrayList<Number>();
List<? extends Number> integers2 = new ArrayList<Number>();
integers.add( new Integer(4));
integers2.add(new Integer(4));
我得到编译器错误在最后一行,我可以知道为什么吗?即使整数扩展了数字,我也会得到以下错误
The method add(capture#3-of ? extends Number) in the type List<capture#3-of ? extends
Number> is not applicable for the arguments (Integer)
因为列表
列表
List<? extends Number> integers2 = new ArrayList<Double>(); //valid
将整数添加到double列表中是无效的,这就是编译器阻止您这样做的原因。
在这种情况下,您可能不应该使用通配符(
?
)。
问题内容: 我正在尝试使用泛型实现以下结构。收到编译器错误,无法找出原因。 这个想法是译者使用T作为字典中键的类型。例如,可以是字符串或枚举。子类提供具体的字典。 但是它失败,因为:“类型’String’不符合协议’Hashable’” 但是String符合Hashable。它也不适用于Int,后者也符合Hashable。 如果删除类型约束,则仅用于测试(在此我还必须禁用字典,因为我不能在其中使用
问题内容: 我正在使用泛型编写某些东西,令我惊讶的是,我发现这行不通: 那我不能实例化泛型吗?没有任何方法可以做到这一点吗? 问题答案: 是的,这真是令人讨厌。 我使用的解决方法是强制客户端在构造新类时传递类-即 然后您可以使用。
我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类
此代码有效。它以“未检查或不安全操作”警告进行编译和运行。 当这两个给我运行时错误时 我遇到的错误如下:
我想在编译时向某些类添加一个泛型字段。为了实现这个目标,我按照官方文档实现了我自己的 AST 注释和转换类,并使用 AST 注释注释了所需的类。 但是我在编译时得到了这个错误: org . codehaus . groovy . control . multiplecompilationerrorsexception:启动失败:/home/.../groovy/Sample.groovy: -1:
问题内容: 我想创建一个KeyValue类,但以通用方式,这就是我写的内容: 错误显示:“令牌“>上的语法错误”,此令牌后应有标识符” 那我该如何在Java中创建一个通用构造函数呢? 问题答案: 您需要从构造函数的签名中删除:它已经隐式存在。