Java中测长函数_怎么对Java8中的函数式接口进行测试

怎么对Java8中的函数式接口进行测试

发布时间:2020-12-01 16:59:58

来源:亿速云

阅读:76

作者:Leah

怎么对Java8中的函数式接口进行测试?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1. 函数式接口的理解

根据重构的思想,需要把容易变化的模块进行抽象并封装起来,从这个点来看,Java8新引入的函数式接口就是基于这个思想进行设计的。

2. 函数式接口定义

2.1 自定义如下

需要FunctionalInterface关键字显示声明:@FunctionalInterface

public interface AppleInterface {

public void test();

}

2.2 系统预定义java.util.function.Consumer;

java.util.function.Function;

java.util.function.Predicate;

java.util.function.Supplier;

可以去查看源码了解具体的细节,这几个接口包括了常用的一些场景,一般可满足需要

3. 函数式接口的使用

函数式接口一般使用前需要先定义,也可以使用系统预定义的几个函数式接口

函数式接口的使用和使用一个变量没有区别,显示声明定义,格式如下:FunctionInterface interface=null;

这里的interface虽然看起来是一个变量,可是实际却是一段行为代码,用于执行具体的业务逻辑,可以自由在方法接口间传递,也可以直接执行

interface.doSomeThing();

如定义函数式接口为参数的接口:public void filter(FunctionInterface interface)

{

interface.doSomeThing();

}

4. 函数式接口练习

4.1 自定义实体类Applepublic class Apple {

private String color;

private float weight;

public Apple(String color, float weight) {

this.color = color;

this.weight = weight;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public float getWeight() {

return weight;

}

public void setWeight(float weight) {

this.weight = weight;

}

}

4.2 自定义函数式接口

该接口有一个test方法,不接收任何参数,也没有任何返回@FunctionalInterface

public interface AppleInterface {

public void test();

}

4.3 测试自定义函数式接口@Test

public void DefineFunctionInterface(){

//自定义函数式接口

AppleInterface at=()->System.out.println("define FunctionInterface AppleInterface.");

at.test();

}

至此,就完成一个很简单的函数式接口的定义和调用

4.4 系统预定义函数式接口

Consumer:该接口接收一个对象T,返回void,测试如下@Test

public void ConsumerTest(){

Consumer consumer=(Apple app)->{System.out.println(app.getColor()+","+app.getWeight());};

List apps=Arrays.asList(new Apple("red", 120),new Apple("blue", 80),

new Apple("green",100));

ConsumerApple(apps,consumer);

}

public void ConsumerApple(List apps,Consumer c){

for(Apple app:apps){

c.accept(app);

}

}

Supplier:该接口不接收任何参数,返回一个对象T,测试如下:@Test

public void SupplierTest(){

Supplier supplier=()->{return new Apple("hello supplier",999);};

Apple app=supplier.get();

System.out.println(app.getColor()+","+app.getWeight());

}

Predicate:该接口接收一个对象T,返回一个Boolean@Test

public void PredicateTest(){

//系统预定义函数式接口测试

Predicate p1=(Apple a)->{if(a.getWeight()>90) return true;return false;};

Predicate p2=(Apple a)->{if(a.getColor().equals("blue")) return true;return false;};

List apps=Arrays.asList(new Apple("red", 120),new Apple("blue", 80),

new Apple("green",100));

filterApple(apps,p1);//筛选重量大于90g的苹果

filterApple(apps,p2);//筛选蓝色的苹果

}

public void filterApple(List apps,Predicate p){

for(Apple app:apps){

if(p.test(app)){

System.out.println(app.getColor()+","+app.getWeight());

}

}

}

Function: 该接口接收一个对象T,经过转换判断,返回一个对象R@Test

public void FunctionTest(){

Function function=(String s)->{return new Apple(s,666);};

Apple app=function.apply("red");

System.out.println(app.getColor()+","+app.getWeight());

app=function.apply("green");

System.out.println(app.getColor()+","+app.getWeight());

}

关于怎么对Java8中的函数式接口进行测试问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值