<noframes id="7xbfr"><pre id="7xbfr"><output id="7xbfr"></output></pre>

      <big id="7xbfr"><font id="7xbfr"><listing id="7xbfr"></listing></font></big>
        <p id="7xbfr"></p>
        <menuitem id="7xbfr"></menuitem>

          <video id="7xbfr"><mark id="7xbfr"><listing id="7xbfr"></listing></mark></video>
            <form id="7xbfr"></form>

          <delect id="7xbfr"><var id="7xbfr"></var></delect>

          什么是函數式接口

          時間:2022-10-06 12:30:34 類型:JAVA
          字號:    

          什么是函數式接口?

            只包含一個抽象方法的接口,稱為函數式接口。

            通常我們會在函數式接口上使用@FunctionalInterface注解來標記它是一個函數式接口,使用了該注解標記的接口,會在編譯期檢查該接口是否是函數式接口,提醒開發者。(非強制性,不使用該注解標記,只要符合只包含一個抽象方法要求同樣是函數式接口,但建議使用)

          什么是Lambda表達式?

            Lambda 是一個匿名函數,我們可以把 Lambda 表達式理解為是一段可以傳遞的代碼(作為參數傳入方法中)。而函數式接口可以簡寫為Lambda表達式,寫出更簡潔、更靈活的代碼。函數式接口和Lambda表達式相輔相成,為Java語言提供了一種更緊湊更易于理解的寫法。

          // 通常lambda表達式 (a, b) -> {
              ...}

            左側:指定了 Lambda 表達式需要的參數列表

            **右側:**指定了 Lambda體,是抽象方法的實現邏輯,也即Lambda表達式要執行的功能

            常規形式(有參數類型,有括號,有花括號)

          public class lamda {
          
              public static void main(String[] args) {
                  Hello like = (int i)->{
                      System.out.println("hello" + i);
                  };
                  like.hello(5);
              }
          }
          interface Hello {
               void hello(int i);
          }

            對于多個參數的方法:

          public class lamda {
          
              public static void main(String[] args) {
          
                  Hello like = (i,j)->{
                      System.out.println("hello" + i + j);
                  };
          
                  like.hello(5,"world");
              }
          }
          interface Hello {
               void hello(int i,String j);
          }

            對于無參或者一個參數的方法:

          public class lamda {
          
              public static void main(String[] args) {
          
                  Hello like = i->{
                      System.out.println("hello" + i);
                  };
          
                  like.hello(5,);
              }
          }
          interface Hello {
               void hello(int i);
          }

            對于只有一行代碼的方法:

          public class lamda {
              public static void main(String[] args) {
                  Hello like = (i,j)->System.out.println("hello" + i + j);
                  like.hello(5,"world");
              }
          }
          interface Hello {
               void hello(int i,String j);
          }

            總結:

            前提是接口為函數式接口(只有一個方法的接口)

            以上所有簡化形式可以一起使用,即可以既簡化參數類型,又可以簡化括號

            lambda表達式只能有一行代碼的情況下才能簡化成為一行,如果有多行,那么就用代碼塊包裹。

            多個參數也可以去掠參數類型,要去掉就都去掉,必須加上括號


          黄网站免费 <