重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

怎么对Java8中的函数式接口进行测试-创新互联

怎么对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 自定义实体类Apple

public 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中的函数式接口进行测试问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享名称:怎么对Java8中的函数式接口进行测试-创新互联
分享链接:http://cqcxhl.com/article/dcspcg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP