<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 8 方法引用示例 > 原文: [https://howtodoinjava.com/java8/lambda-method-references-example/](https://howtodoinjava.com/java8/lambda-method-references-example/) 在 [Java 8](//howtodoinjava.com/java-8-tutorial/) 中,我們可以使用`class::methodName`類型的語法從類或對象中引用方法。 讓我們學習一下 Java 8 中可用的**方法引用的不同類型**。 ```java Table of Contents 1\. Types of Method References 2\. Reference to static method - Class::staticMethodName 3\. Reference to instance method from instance - ClassInstance::instanceMethodName 4\. Reference to instance method from class type - Class::instanceMethodName 5\. Reference to constructor - Class::new ``` ## 1\. 方法引用的類型 Java 8 允許四種類型的方法引用。 | 方法引用 | 描述 | 方法引用示例 | | --- | --- | --- | | **靜態方法**的引用 | 用于從類中引用靜態方法 | `Math::max`等同于`(x, y) -> Math.max(x,y)` | | 來自實例的**實例方法**的引用 | 使用所提供對象的引用來引用實例方法 | `System.out::println`等同于`x -> System.out.println(x)` | | 來自類類型的**實例方法**的引用 | 在上下文提供的對象的引用上調用實例方法 | `String::length`等同于`str -> str.length()` | | **構造器**的引用 | 引用構造器 | `ArrayList::new`等同于`() -> new ArrayList()` | ## 2\. 靜態方法的引用 – `Class::staticMethodName` 使用`Math.max()`是靜態方法的示例。 ```java List<Integer> integers = Arrays.asList(1,12,433,5); Optional<Integer> max = integers.stream().reduce( Math::max ); max.ifPresent(value -> System.out.println(value)); ``` 輸出: ```java 433 ``` ## 3\. 來自實例的實例方法的引用 – `ClassInstance::instanceMethodName` 在上面的示例中,我們使用`System.out.println(value)`打印找到的最大值。 我們可以使用`System.out::println`打印該值。 ```java List<Integer> integers = Arrays.asList(1,12,433,5); Optional<Integer> max = integers.stream().reduce( Math::max ); max.ifPresent( System.out::println ); ``` Output: ```java 433 ``` ## 4\. 來自類類型的實例方法的引用 – `Class::instanceMethodName` 在此示例中,`s1.compareTo(s2)`稱為`String::compareTo`。 ```java List<String> strings = Arrays .asList("how", "to", "do", "in", "java", "dot", "com"); List<String> sorted = strings .stream() .sorted((s1, s2) -> s1.compareTo(s2)) .collect(Collectors.toList()); System.out.println(sorted); List<String> sortedAlt = strings .stream() .sorted(String::compareTo) .collect(Collectors.toList()); System.out.println(sortedAlt); ``` 輸出: ```java [com, do, dot, how, in, java, to] [com, do, dot, how, in, java, to] ``` ## 5\. 構造器的引用 – `Class::new` 可以更新第一種方法,以創建一個從 1 到 100 的整數列表。使用 [lambda 表達式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)非常簡單。 要創建`ArrayList`的新實例,我們已經使用`ArrayList::new`。 ```java List<Integer> integers = IntStream .range(1, 100) .boxed() .collect(Collectors.toCollection( ArrayList::new )); Optional<Integer> max = integers.stream().reduce(Math::max); max.ifPresent(System.out::println); ``` 輸出: ```java 99 ``` 這是 Java 8 lambda 增強特性中的**方法引用的 4 種類型**。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看