Javaで匿名クラスを実装する方法



このブログでは、Javaの匿名クラスの詳細で包括的な知識と、例と通常のクラスとの違いについて説明します。

匿名クラスを使用すると、小さなコードを記述し、クラスの宣言とインスタンス化を同時に行うことができます。これらのクラスには名前がありません。クラスを1回だけ使用する場合に使用されます。これはJavaプログラミングの重要な側面です。次の順序でJavaの匿名クラスとは何かを理解しましょう。

匿名クラスの宣言





通常、クラスを作成します。つまり、クラスを宣言しますが、匿名クラスは式であり、別のクラスで匿名クラスを定義することを意味します。 。簡単に言うと、匿名の内部クラスは名前のないクラスであり、1つのオブジェクトのみが作成されます。

Anonymous-Class-In-Java



匿名クラスは、クラスのサブクラスを作成せずに、クラスまたはインターフェイスのオーバーロードメソッドを使用してオブジェクトのインスタンスを作成する必要がある場合に役立ちます。

匿名は、次の2つの方法で作成できます。

  • クラス(抽象にすることもできます)
  • インターフェース

匿名クラスでは、次のように宣言できます。



  • 田畑
  • 追加の方法
  • インスタンスイニシャライザー
  • ローカルクラス

Javaでの匿名クラスの構文

匿名クラスの構文は、以下のスニペットに示すようにブロックにクラス定義があることを除いて、コンストラクターと同じです。

// AnonymousClass = interface、abstract / concreteクラス。 AnonymousClass t = new AnonymousClass(){//メソッドとフィールドpublic void someMethod(){//コードはここにあります}}

次の例を見てみましょう。

JavaScriptで配列の長さを取得する方法

次の例、HelloAnonymousClass、ローカル変数の初期化ステートメントで匿名クラスを使用しますgreetSomeoneただし、変数の初期化にはローカルクラスを使用しますgreetWorld

public class HelloAnonymousClass {interface HelloWorld {public void sayHello()public void sayHelloTo(String some)} public void sayHello(){class GreetWorldimplements HelloWorld {String name = 'world' public void sayHello(){sayHelloTo( 'world')} public void sayHelloTo(String some){name = some System.out.println( 'Hello' + name)}} HelloWorld greetWorld = new GreetWorld()HelloWorld greetSomeone = new HelloWorld(){String name = 'jon' public void sayHello( ){sayHelloTo( 'Jon')} public void sayHelloTo(String some){name = some System.out.println( 'hola' + name)}} greetWorld.sayHello()greetSomeone.sayHelloTo( 'Doe')} public static void main(String ... args){HelloAnonymousClass myApp = new HelloAnonymousClass()myApp.sayHello()}}

匿名クラスが式であることを確認したように、構文は、ブロックにクラス定義があることを除いて、コンストラクターと同じです。 greetSomeoneオブジェクトのインスタンス化について考えてみます。

HelloWorld greetSomeone = new HelloWorld(){String name = 'jon' public void sayHello(){sayHelloTo( 'Jon')} public void sayHelloTo(String some){name = some System.out.println( 'hola' + name) }}

匿名クラスは、次のもので構成されています。

  • 新しい演算子。
  • インターフェイスを実装したり、クラスを拡張したりできます。上記の例のように、それはインターフェースを実装しています。
  • コンストラクターに引数を渡すために、通常のクラスと同じように括弧が含まれています。
  • メソッド宣言を含む本体が含まれます。宣言は許可されていません。

匿名クラスはステートメントの一部である必要があります。

上記の例では、匿名クラス式は、によって開始されるステートメントの一部です。greetSomeone

Javaで匿名クラスを作成する方法

Javaで内部クラスを作成する方法は3つあります

  • クラスを拡張することによって

他のクラスを拡張することで匿名内部クラスを作成できます。Threadクラスを使用してスレッドを作成する必要がある場合、別のクラスを作成する代わりに匿名内部クラスを作成できます。

//他のクラスクラスを拡張して匿名内部クラスを説明するプログラムAnonymousThreadClass {public static void main(String [] args){//スレッドクラスを拡張する匿名内部クラスThread t = new Thread(){public void run(){System .out.println( 'Child!')}} t.start()System.out.println( 'Parent!')}}

出力:

親!

子!

  • インターフェイスを実装することによって

インターフェイスを実装することで、匿名の内部クラスを作成することもできます。これで、同様にクラスを拡張して内部クラスを作成したので、インターフェイスを実装するクラスを作成できます。

//インターフェイスクラスを実装することで匿名内部クラスを説明するプログラムAnonymousThreadClass {public static void main(String [] args){//インターフェイスRunnableを実装する匿名内部クラスr = new Runnable(){public void run(){System.out .println( 'Child!')}}スレッドt = new Thread(r)t.start()System.out.println( 'Parent!')}}

出力:

親!

子!

  • メソッド/コンストラクターへの引数として

構文を理解するために、以下の例を見てみましょう。

//引数クラスによって匿名内部クラスを説明するプログラムAnonymousThreadClass {public static void main(String [] args){//コンストラクタ引数を持つ匿名クラスThread t = new Thread(new Runnable(){public void run(){System。 out.println( 'Child!')}})t.start()System.out.println( 'Parent!')}}

出力:

親!

子!

通常の内部クラスと匿名の内部クラスの違い

  • 実装できます 複数のインターフェース 通常のクラスを使用しますが、匿名の内部クラスを使用すると、実装できるインターフェイスは1つだけです。

  • 通常のクラスでは、 クラスを拡張する また、複数のインターフェイスを実装しますが、匿名の内部クラスを使用すると、クラスを拡張するか、インターフェイスを実装できますが、両方を同時に実装することはできません。

  • 匿名で コンストラクターを記述できません 匿名の内部クラスには名前がなく、コンストラクターの名前はクラス名と同じである必要があるためです。

この記事では、匿名の内部クラスとは何か、そしてどのように作成できるかを見てきました。匿名内部クラスの構文と、3つの方法で匿名クラスを作成する方法について説明しました。これで、このJavaの匿名クラスの記事は終わりです。チェックしてください Edurekaによる。

javaは-関係

質問がありますか?この記事のコメントセクションに記載してください。できるだけ早くご連絡いたします。