小编Ame*_*kar的帖子

当人们可以调用方法时,为什么会使用`java.util.function.supplier`?

我在https://dzone.com/articles/supplier-interface上看到了一些使用供应商界面的例子.

我的问题是,如果在上面的例子中,我可以做一些简单的事情:

driveVehicle(new Vehicle());
driveVehicle(new Car());
Run Code Online (Sandbox Code Playgroud)

为什么要使用供应商界面,如果它只是调用方法,而不接受任何参数.

java lambda java-8 functional-interface

3
推荐指数
2
解决办法
3427
查看次数

任何具有单一方法的接口都可以被视为功能接口吗?

例如,我有这个接口:

package tester;

public interface Calculator{

     public int calculate(int a,int b);

}
Run Code Online (Sandbox Code Playgroud)

要么

package tester;

@FunctionalInterface
public interface Calculator{

    public int calculate(int a,int b);

} 
Run Code Online (Sandbox Code Playgroud)

我也可以将第一个视为功能界面.例如 :

package tester;
public class A {

    int a;
    int b;
    int sum;
    A(Calculator c,int e, int d){
        a=e;
        b=d;
        sum =c.calculate(a, b);

    }
    int get(){
        return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)

班长

package tester;

public class runner {

    public static void main(String a[]){

        System.out.println(new A((x,b)-> (x+b),1,2).get());
    }
}
Run Code Online (Sandbox Code Playgroud)

代码可以使用或不使用注释,那么为什么注释呢?为什么不能说任何具有单一方法的接口都可以作为功能接口?

java lambda java-8 functional-interface

2
推荐指数
1
解决办法
304
查看次数

java编译器将Function <Double,Integer>转换为DoubleToIntFunction吗?

Function<Double,Integer> f1=(d)-> {
        if(d>5)
            return 0;
        return 1;
    };
DoubleToIntFunction f2=(d)-> {
        if(d>5)
            return 1;
        return 0;
    };
double d=5.0;
f1.apply(d);
f2.applyAsInt(d);
Run Code Online (Sandbox Code Playgroud)

将f1优化为DoubleToIntFunction(有些像f2).

java java-8 functional-interface javacompiler

0
推荐指数
1
解决办法
106
查看次数