Java 7 / Android上的Backported StreamSupport

时间:2015-09-21 11:39:05

标签: android java-7

我的意思是这个库:http://sourceforge.net/projects/streamsupport/

它意味着与Java8 Streams兼容,所以我尝试从Java8文档中运行一些示例,如下所示:

IntStream.range(1, 4).forEach(System.out::println);

但是.range没有在任何地方定义。从该图书馆文件:

  

streamsupport是Java 8 java.util.function(功能接口)和java.util.stream(streams)API的后端,适用于Java 6或7的用户,并补充了来自java.util.concurrent的选定内容。在Java 6中存在。

但: - 我找不到任何一个例子如何使用该反向移植的库 - 正如您所看到的,我也无法使用Java8中最简单的场景。

有人能举例说明如何使用backported StreamSupport或文档链接吗?

[编辑]

import java8.util.function.Consumer;

IntStreams.range(1, 4).forEach(new Consumer<Integer>(){
         public void accept(Integer next){
                 System.out.println(next);
         }
});

错误讯息:

  

错误:(126,35)错误:接口IntStream中的方法forEach不能   适用于给定类型;必需:IntConsumer发现:&gt;原因:实际论证&gt;无法通过方法转换为IntConsumer   调用转换

如果我将消费者改为IntConsumer:

  

错误:(127,59)错误:类型IntConsumer不接受参数

1 个答案:

答案 0 :(得分:5)

我没有使用过这个库,但是,查看代码(http://sourceforge.net/p/streamsupport/code/ci/default/tree/src/main/java/java8/util/stream/IntStreams.java)我认为这应该可行

import java8.util.stream.IntStreams;
IntStreams.range(1, 4).forEach(System.out::println);

Java 7 Style

import java8.util.stream.IntStreams;     
import java8.util.function.IntConsumer;

IntStreams.range(1, 4).forEach(new IntConsumer(){
        public void accept(int next){
                System.out.println(next);
        }
});

已更新已切换为IntConsumer。使用下面的普通消费者

import java8.util.stream.IntStreams;     
import java8.util.function.Consumer;

IntStreams.range(1, 4)
        .boxed()
        .forEach(new Consumer<Integer>(){
                public void accept(Integer next){
                        System.out.println(next);
                }
});