针对Generator的IntSupplier实现的构造方法引用会导致编译错误

时间:2015-11-19 17:30:58

标签: java java-8 method-reference

为什么这段代码不能编译?

package com.heather;

import java.util.function.IntSupplier;
import java.util.stream.IntStream;

public class MainClass {

    public static void main(String[] args) {
        class IntSupplierImpl implements IntSupplier {
            int current = 0;
            @Override
            public int getAsInt() {
                return current++;
            }

        }

        //This doesn't work.
        int sum = IntStream.generate(IntSupplierImpl::new).limit(1000).filter(i -> i % 3 == 0 || i % 5 == 0).sum();
        System.out.println(sum);

        //This does work. 
        int sum2 = IntStream.generate(new IntSupplierImpl()).limit(1000).filter(i -> i % 3 == 0 || i % 5 == 0).sum();
        System.out.println(sum2);
    }

}

0 个答案:

没有答案