Java中addFunction什么,Java 8 Function class addThen默认方法

我正在学习

Java-8 Lambda,我试图理解java.util.function.Function接口中的addThen默认方法.根据我的理解,addthen将首先执行First函数,然后它将执行第二个方法.

所以我创建了一个如下程序:

//Pojo class

class Bike {

public Bike(String bikeName, int price, String bikeType) {

this.bikeName = bikeName;

this.price = price;

this.bikeType = bikeType;

}

private String bikeType;

private String bikeName;

private int price;

public String getBikeType() {

return bikeType;

}

@Override

public String toString() {

return "Bike [bikeType=" + bikeType + ", bikeName=" + bikeName + ", price=" + price + "]";

}

public void setBikeType(String bikeType) {

this.bikeType = bikeType;

}

public String getBikeName() {

return bikeName;

}

public void setBikeName(String bikeName) {

this.bikeName = bikeName;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

}

//Main class

public class FunctionInbuildDefaultMethodsExample {

public static void main(String[] args) {

learningAndThen();

}

static void learningAndThen() {

Function updateBikefunction = (Bike bike) -> {

System.out.println("OldBike Name is::" + bike.getBikeName());

bike.setBikeName("PULSOR-200CC");

return bike.getBikeName();

};

Function updateBikePriceFunction = (Bike bike) -> {

System.out.println("OldBike Price is::" + bike.getPrice());

bike.setPrice(95000);

return bike.getBikeName();

};

/*

* First update Bike and then price

* */

/*Compilation error here*/

Function bikeFunction = updateBikefunction.andThen(updateBikePriceFunction);

bikeFunction.apply( new Bike("PULSOR-125CC", 65000, "BAJAJ"));

}

}

我在线上遇到编译错误

Function bikeFunction =

updateBikefunction.andThen(updateBikePriceFunction);

“The method andThen(Function) in the type Function is not applicable for the arguments (Function)”

,在查看Function接口的源代码后,我明白了

addThen默认方法是查找Function< String,Book>类型的实例.我的问题是,如果addThen默认方法应该执行第一个函数,然后执行作为参数传递的下一个函数,为什么addThen函数接口的默认方法是以类型函数< String,Book>类型的实例除外的方式编写的. .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值