<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 9 - 匿名內部類和菱形運算符 > 原文: [https://beginnersbook.com/2018/05/java-9-anonymous-inner-classes-and-diamond-operator/](https://beginnersbook.com/2018/05/java-9-anonymous-inner-classes-and-diamond-operator/) 在這篇文章中,我們將討論 [Java SE 9](https://beginnersbook.com/2018/04/java-9-features-with-examples/) 中引入的**菱形運算符增強**。 ## 什么是菱形運算符? 菱形操作符是作為 java SE 7 中的新功能引入的。菱形操作符的目的是通過將泛型類型保留在表達式的右側來避免冗余代碼。 ```java // This is before Java 7\. We have to explicitly mention generic type // in the right side as well. List<String> myList = new ArrayList<String>(); // Since Java 7, no need to mention generic type in the right side // instead we can use diamond operator. Compiler can infer type. List<String> myList = new ArrayList<>(); ``` ## 使用匿名內部類時菱形運算符的問題 Java 7 允許我們在普通類中使用菱形運算符,但它不允許我們在匿名內部類中使用它們。讓我們舉一個例子: ```java abstract class MyClass<T>{ abstract T add(T num, T num2); } public class JavaExample { public static void main(String[] args) { MyClass<Integer> obj = new MyClass<>() { Integer add(Integer x, Integer y) { return x+y; } }; Integer sum = obj.add(100,101); System.out.println(sum); } } ``` 輸出: ```java $javac JavaExample.java JavaExample.java:7: error: cannot infer type arguments for MyClass MyClass obj = new MyClass<>() { ^ reason: cannot use '<>' with anonymous inner classes where T is a type-variable: T extends Object declared in class MyClass 1 error ``` 當我們在 Java SE 8 中運行上面的代碼時,我們遇到了編譯錯誤。 ## Java 9 - 菱形運算符改進 Java 9 改進了菱形運算符的使用,并允許我們將菱形運算符與匿名內部類一起使用。讓我們采用我們在上面看到的相同的例子。 **在 Java SE 9** 中運行此代碼 ```java abstract class MyClass<T>{ abstract T add(T num, T num2); } public class JavaExample { public static void main(String[] args) { MyClass<Integer> obj = new MyClass<>() { Integer add(Integer x, Integer y) { return x+y; } }; Integer sum = obj.add(100,101); System.out.println(sum); } } ``` 輸出: ```java 201 ``` Eclipse Oxygen 中使用 jdk 9 ![java 9 Diamond operator enhancements](https://img.kancloud.cn/47/5f/475fcfd5e8c8c02583e7d167f95d1d79_762x586.jpg)的上述代碼的屏幕截圖
                  <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>

                              哎呀哎呀视频在线观看