首页 > 解决方案 > 我怎样才能创建一个流对象?

问题描述

假设我有:

interface SomeInterface {       
   Foo getFoo();
}

class SomeClass implements SomeInterface {
    Foo getFoo() {
       //returns a Foo object
    }
}

然后在服务中,我有:

List<SomeClass> getItems() {
   //returns a list of SomeClass objects
}

不允许执行以下操作:

Stream<SomeInterface> items = service.getItems().stream();

但最终,我有其他类可以共享这个接口并且想做:

someMethod(Stream<SomeInterface> items) {
   //some operation
}

有没有解决的办法?喜欢用flatMap?(我注意到如果我在对象上有一个包装类ListSomeClass我可以flatMap让包装返回一个SomeInterface对象流。)

我没有找到类似的问题,也不容易看到解决方案。可能是我想念的容易的东西。爪哇 14。

标签: javainterfacejava-stream

解决方案


如果您的目标是让接口someMethodSomeInterface及其子类型接受,那么您可以使用

/*someReturnTypeHere*/ someMethod(Stream<? extends SomeInterface> items){
   //some operation
}

推荐阅读