java - `Iterable` 的接口(interface)转换

标签 java generics interface polymorphism javafx

如果我有一个名为 Cue 的类实现 Tickable .后来,我有一个像这样的可观察列表:ObservableList<Cue> oList . oList工具 Iterable<Cue> (这就是 ObservableList 的声明方式)。

我有一个函数需要 Iterable<Tickable> .我如何让它接受 ObservableList<Cue>提示是 Tickable ObservableList 是一个 Iterable .出于某种原因,我无法在它们之间进行种姓转换或自动向上转换。有什么办法吗?

最佳答案

你不能从 Iterable<Cue> 转换到Iterable<Tickable> , 因为即使 CueTickable , 一个 Iterable<Cue>不是 Iterable<Tickable> ,因为 Java 的泛型是不变的。

让一个方法接受一个ObservableList<Cue> , 方法参数类型为 Iterable<Cue>或使用有界通配符——Iterable<? extends Tickable> .

关于java - `Iterable` 的接口(interface)转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20689499/

相关文章:

java - 为什么监听器有时注册到 "this",有时注册到匿名类?

java - Java中的多线程(并行代码比串行慢得多)

java - 以编程方式进行 Paypal 批量结算

java - Kotlin、Java、JSTL boolean 互操作

java - 我可以有一个接受子类型的列表属性吗?

ios - 在 Swift 中创建自定义 JSON 映射器

excel - 在 VBA 中实现接口(interface)时,实现的功能需要是私有(private)的还是公有的?

java - 移动游戏中的物体

Java:如何从泛型类型获取类文字?

java - 将提示文本的样式与 JFXTextField 中的文本分开