Java Lambada表現と匿名の内部クラスの連絡と違いの実例分析


本論文の実例は、Java Lambada表現と匿名内部クラスの関連と違いを述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
一点の目
Lambada表現は匿名の内部クラスと同じ点が存在します。
  • Lambda表現は、匿名の内部クラスと同様に、「effectively final」のローカル変数に直接アクセスでき、外部クラスのメンバー変数(インスタンス変数とクラス変数を含む)もあります。
  • Lamber表現で作成されたオブジェクトは、匿名の内部クラスで生成されたオブジェクトと同様に、インターフェースから直接に引き継がれたデフォルトの方法を呼び出すことができます。
  • Lambda表現と匿名内部クラスは主に以下のように区別されています。
  • 匿名の内部クラスは、任意のインターフェースのためにインスタンスを作成することができる。インターフェースがいくつかの抽象的な方法を含むに関わらず、匿名の内部クラスがすべての抽象的な方法を実現すればよい。ただし、Lambada式は関数式インターフェースのためにのみインスタンスを作成できます。
  • 匿名の内部クラスは、抽象的なクラス、または一般的なクラスのためにインスタンスを作成することができますが、Lamban表現は、関数式インターフェースのためにのみインスタンスを作成することができます。
  • 匿名の内部クラスで実現される抽象的な方法の方法体は、インターフェースで定義されたデフォルトの方法を起動することを可能にする。ただし、Lamber表現のコードブロックは、インターフェースで定義されたデフォルトの方法を呼び出すことができません。
  • 二実戦
    1コード
    
    @FunctionalInterface
    interface Displayable
    {
      //             
      void display();
      default int add(int a,int b)
      {
        return a+b;
      }
    }
    public class LambdaAndInner {
      private int age =15;
      private static String name="      ";
      public void test()
      {
        String book="  effectively final";
        Displayable dis =()->
        {
          //   effectively final      
          System.out.println("book     :"+book);
          //              
          System.out.println("    age     :"+age);
          System.out.println("    name    :"+name);
        };
        dis.display();
        //  dis        add  
        System.out.println(dis.add(3,5));
      }
      public static void main(String[] agrs)
      {
        LambdaAndInner lambda = new LambdaAndInner();
        lambda.test();
      }
    }
    
    
    2運転
    bookの局部変数は:effectively finalです。
    外部クラスのageインスタンス変数は、15です。
    外部クラスのnameクラス変数は、外部クラス変数です。
    8
    もっと多くのjava関連の内容に興味がある読者は当駅のテーマを調べてもいいです。「Javaは対象プログラムに向かって入門と階段教程を設計します。」、「Javaデータ構造とアルゴリズム教程」、「Java操作DOMノード技術のまとめ」、「Javaファイルとディレクトリの操作テクニックのまとめ」、「Javaキャッシュ操作テクニックのまとめ
    本論文で述べたように、皆さんのjavaプログラムの設計に役に立ちます。