java8: lambda表達式的參數

jopen 10年前發布 | 26K 次閱讀 Java開發 Java8

lambda表達式由三個部分組成:

  1. 一個括號,包括用逗號分隔的參數列表,如果只有一個參數,你可以省略括號。另外你可以省略參數的類型
  2. 一個箭頭符號: -> 
  3. 方法體:可以是表達式和代碼塊(即函數式接口里面方法的實現),如果是代碼塊,則必須用{}來包裹起來。注意若函數式接口里面方法返回值是void,則無需{}
  4. </ol>

    下面的代碼樣例說明在使用lambda表達式時如何傳遞一個或多個參數。

    public class Main {
        public static void main(String[] args) {
            startTest(new Lambda() {
                @Override
                public void doSomething() {
                    System.out.println("通過匿名類方式實現");
                }
            });
    
            startTest(new ParamLambda() {
                @Override
                public void doSomething(String param1) {
                    System.out.println("通過匿名類方式實現,參數的值是:" + param1);
                }
            });
    
            startTest(() -> {
                System.out.println("使用lambda表達式:無參數");
            });
    
            startTest((param1) -> {
                System.out.println("使用lambda表達式:一個參數,其值是:" + param1);
            });
    
            startTest((param1, param2) -> {
                System.out.println("使用lambda表達式:一個參數,其值是:" + param1 + "," + param2);
            });
        }
    
        public static void startTest(Lambda obj) {
            obj.doSomething();
        }
    
        public static void startTest(ParamLambda obj) {
            obj.doSomething("to do something");
        }
    
        public static void startTest(MultiParamLambda obj) {
            obj.doSomething("hi", "you must do something");
        }
    }
    
    interface Lambda {
        void doSomething();
    }
    
    interface ParamLambda {
        void doSomething(String param1);
    }
    
    interface MultiParamLambda {
        void doSomething(String param1, String param2);
    }
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!