91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么對Java8中的函數式接口進行測試

發布時間:2020-12-01 16:59:58 來源:億速云 閱讀:138 作者: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 自定義實體類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>:該接口接收一個對象T,返回void,測試如下

 @Test
  public void ConsumerTest(){
  Consumer<Apple> consumer=(Apple app)->{System.out.println(app.getColor()+","+app.getWeight());};
  List<Apple> apps=Arrays.asList(new Apple("red", 120),new Apple("blue", 80),
 new Apple("green",100));
  ConsumerApple(apps,consumer);
  }

  public void ConsumerApple(List<Apple> apps,Consumer<Apple> c){
  for(Apple app:apps){
 c.accept(app);
  }
  }

Supplier<T>:該接口不接收任何參數,返回一個對象T,測試如下:

 @Test
  public void SupplierTest(){
  Supplier<Apple> supplier=()->{return new Apple("hello supplier",999);};
  Apple app=supplier.get();
  System.out.println(app.getColor()+","+app.getWeight());
  }

Predicate<T>:該接口接收一個對象T,返回一個Boolean

 @Test
  public void PredicateTest(){
  //系統預定義函數式接口測試
  Predicate<Apple> p1=(Apple a)->{if(a.getWeight()>90) return true;return false;};
  Predicate<Apple> p2=(Apple a)->{if(a.getColor().equals("blue")) return true;return false;};

  List<Apple> 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<Apple> apps,Predicate<Apple> p){
  for(Apple app:apps){
 if(p.test(app)){
 System.out.println(app.getColor()+","+app.getWeight());
 }
  }

  }

Function<T,R>: 該接口接收一個對象T,經過轉換判斷,返回一個對象R

 @Test
  public void FunctionTest(){
  Function<String,Apple> 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中的函數式接口進行測試問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鸡西市| 台江县| 万年县| 武邑县| 韶关市| 久治县| 乌兰察布市| 彭水| 克山县| 金寨县| 韶关市| 洛阳市| 茶陵县| 新邵县| 五寨县| 阿拉善左旗| 房山区| 冕宁县| 天镇县| 恩施市| 泾阳县| 南皮县| 栾川县| 九寨沟县| 靖江市| 达日县| 历史| 漳州市| 涪陵区| 环江| 隆林| 库尔勒市| 五原县| 阜平县| 阿拉善右旗| 钟祥市| 宜州市| 湘阴县| 九江市| 扬中市| 兴海县|