java - 如何在 Java 中创建一个泛型方法,其中参数化类型之一必须实现 Iterable?

标签 java generics

这是我正在尝试编写的方法(现在无法编译,因为 what 不被视为 Iterable ):

public <T,V> ArrayList<V> mySelect(T what,ITest<V> x) {
     ArrayList<V> results = new ArrayList<V>();
     for(V value : what) {
        if(x.accept(value)) {
           results.add(value);
        }
     }  
     return results;
}

T 类型实现 Iterable ,并在使用 foreach 时返回 V 对象。问题是我不知道怎么写。你能帮忙吗?

最佳答案

public <T extends Iterable<V>,V> ArrayList<V> mySelect(T what, ITest<V> x) {

背后的逻辑:TIterable 的任何子类(在本例中为实现类),并且 Iterable 被定义为在 V

上迭代

我建议阅读 araqnid 的建议,因为它向您展示了如何使代码更清晰。

关于java - 如何在 Java 中创建一个泛型方法,其中参数化类型之一必须实现 Iterable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930432/

相关文章:

java - Eclipse:在特定文件夹中搜索文件(将其中的特定关键字作为搜索条件)的键盘快捷键是什么?

java - Java中轮询时的Thread.sleep或yield

java - 列表与列表<Object>

java - box2d 、 libgdx - 玩家 body 具有宇宙飞船的相对速度,但仍然能够移动

java - 降低 if-else 语句代码的复杂性

java - 使用JNA从java crash VM调用c,谁能告诉我为什么会这样?

c# - 根据函数的表达式参数推断第二个泛型参数

Java 8。泛型。使用原始类型。意外的类型转换

java - 给定 `T` 和 `U` 其中 `T extends U` 如何返回 `U`

c# - C# 中的变量泛型返回类型