1. 程式人生 > 實用技巧 >函式式介面

函式式介面

基礎題

練習一:函式式介面

  1. 定義一個函式式介面CurrentTimePrinter,其中抽象方法void printCurrentTime(),使用註解@FunctionalInterface
  2. 在測試類中定義static void showLongTime(CurrentTimePrinter timePrinter),該方法的預期行為是使用timePrinter列印系統當前毫秒值
  3. 測試showLongTime(),通過lambda表示式完成需求

答案

TimePrinter介面:

@FunctionalInterface
public interface CurrentTimePrinter

{
    void printCurrenTime();
}

測試類:

public class Test01 {
    public static void main(String[] args) {
        showLongTime(()->System.out.println(System.currentTimeMillis()));
    }

    public static void showLongTime(CurrentTimePrinter timePrinter){
        timePrinter.printCurrentTime();
    }
}

練習二:函式式介面

  1. 定義一個函式式介面IntCalc,其中抽象方法int calc(int a , int b),使用註解@FunctionalInterface
  2. 在測試類中定義static void getProduct(int a , int b ,IntCalc calc), 該方法的預期行為是使用calc得到ab的乘積並列印結果
  3. 測試getProduct(),通過lambda表示式完成需求

答案

IntCalc介面:

@FunctionalInterface
public interface IntCalc {
    int calc(int a, int b);
}

測試類:

public class Test02 {
    public static void main(String[] args) {
        getProduct(2,3,(a,b)->a*b);
    }
    public static void getProduct(int a, int b, IntCalc intCalc){
        int product = intCalc.calc(a,b);
        System.out.println(product);

    }
}

  

練習三:靜態方法引用

  1. 定義一個函式式介面NumberToString,其中抽象方法String convert(int num),使用註解@FunctionalInterface
  2. 在測試類中定義static void decToHex(int num ,NumberToString nts), 該方法的預期行為是使用nts將一個十進位制整數轉換成十六進位制表示的字串,tips:已知該行為與Integer類中的toHexString方法一致
  3. 測試decToHex(),使用方法引用完成需求

答案

NumberToString介面:

@FunctionalInterface
public interface NumberToString {
    String convert(int num);
}

測試類:

public class Test03 {
    public static void main(String[] args) {
        decToHex(999, Integer::toHexString);
    }
    public static void decToHex(int num ,NumberToString nts){
        String convert = nts.convert(num);
        System.out.println(convert);
    }
}