函式式介面
阿新 • • 發佈:2020-08-11
基礎題
練習一:函式式介面
- 定義一個函式式介面CurrentTimePrinter,其中抽象方法void printCurrentTime(),使用註解@FunctionalInterface
- 在測試類中定義static void showLongTime(CurrentTimePrinter timePrinter),該方法的預期行為是使用timePrinter列印系統當前毫秒值
- 測試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(); } }
練習二:函式式介面
- 定義一個函式式介面IntCalc,其中抽象方法int calc(int a , int b),使用註解@FunctionalInterface
- 在測試類中定義static void getProduct(int a , int b ,IntCalc calc), 該方法的預期行為是使用calc得到a和b的乘積並列印結果
- 測試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); } }
練習三:靜態方法引用
- 定義一個函式式介面NumberToString,其中抽象方法String convert(int num),使用註解@FunctionalInterface
- 在測試類中定義static void decToHex(int num ,NumberToString nts), 該方法的預期行為是使用nts將一個十進位制整數轉換成十六進位制表示的字串,tips:已知該行為與Integer類中的toHexString方法一致
- 測試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); } }