好的,这是我的问题:
我有一个包含interfaces的列表List<Interface> a
-和扩展该接口的接口的列表:List<SubInterface> b
。我要设置a = b
。我不希望使用addAll()
任何东西或会花费更多内存的东西,因为我正在做的事情已经非常耗费成本。我确实需要能够说a = b
。我已经尝试过List<? extends Interface> a
,但是后来我无法将接口添加到列表中a
,只能将SubInterfaces
添加到列表中。有什么建议?
我希望能够做这样的事情:
List<SubRecord> records = new ArrayList<SubRecord>();
//add things to records
recordKeeper.myList = records;
RecordKeeper类是包含接口列表的类(NOT subInterfaces)
public class RecordKeeper{
public List<Record> myList;
}
因此,我的一个朋友找到的一个相当简单的解决方案是:
recordKeeper.myList = (List<Record>)(List<? extends Record>)records;
就我所知,这是可行的,因为它需要一些婴儿步骤。List<SubRecord>
是List<? extends Record>
,并且List<? extends Record>
是List<Record>
。它可能并不漂亮,但是仍然可以工作。
问题内容: 我为缓存编写了一个函数来检索特定对象。这样我就不需要投了。 我正在这样使用 但是现在我的缓存中有一个字符串列表,我不能这样使用 问题是。我对Java非常陌生,我该怎么写? 问题答案: 您无法获得的类,在您的情况下,唯一的方法是:
问题内容: 我想在嵌套的静态接口中使用泛型类。我的目标是做这样的事情: 但是我得到一个错误:无法对非静态类型T进行静态引用。如果进行一些更改(如下所述),我可以在接口内部使用泛型,但是我想避免使用此方法,因为编写同一个类两次:一次用于MyClass,一次用于MyInterface。 谢谢。 编辑 :我想这样做: 要么 问题答案: 静态嵌套类或嵌套接口(顺便说一句,始终是静态的)与其外部类(或接口)
下面是我试图做的一个非常简单的说明: 最后一个方法调用(consumer.consumer())给了我一个编译器错误 Out projected type’EventConsumer 我知道Kotlin对泛型的要求比Java严格得多,这可能就是它不起作用的原因,但我该如何正确地实现这样的东西呢?
这个问题是关于接口与实现该接口的类之间的关系。我看不出这个或这个如何回答这个问题。 我创建了一个接口和一个抽象泛型类,它实现了该接口。然后创建两个具体的类和。然后创建了一个元素列表,这些元素使用一个值和一个值扩展了。到目前为止还不错。 现在我要分配扩展为。我的期望是,这应该是有效的,因为无论什么扩展也实现。但编译器不允许我。这是一个错误: 我可以复印一下名单: 用于创建一个值,如果类型为。但赋值报
如果我有这样的方法: 为什么要编译这个代码?为什么超级字符串与T兼容扩展了CharSequence
问题内容: 您如何进行这项工作: 不做 编辑 为什么这不起作用? 我正在将编译器消息标记为错误。 问题答案: Reimeus已经指出,您在编辑中要求的内容是不可能的。我只想扩展一下原因。 人们会认为您可以使用以下内容: 实际上,这就是我第一次看到这篇文章时想到的。但这实际上会导致编译器错误: 类型变量不能跟其他界限 为了帮助我解释原因,我想引用Victor Rudometov在OracleBlog