匿名オブジェクト:名前のないオブジェクト。
非匿名オブジェクト:
className c = new className();
c.run();
匿名オブジェクト:
new className()。run();
注:
1.オブジェクトがメソッドを1回だけ呼び出す場合、匿名オブジェクトに単純化できます。
2。2つの匿名オブジェクトは同じオブジェクトではありません。
3.一般に、属性値は匿名オブジェクトに割り当てられません。これは、取得できないためです。
4.一度実行すると、直接リサイクルされ、メモリスペースが保存されます。
匿名オブジェクトで使用されるコードの例:
public class anony {int a = 1; int b = 2; void run(){system.out.println(a+b);} public static void main(string [] args){new anony()。a = 10; //匿名オブジェクトを再割り当てすることはできず、割り当ては依然として失敗しますa = new anony(); a.run(); //匿名でオブジェクトを作成し、メソッドを呼び出します}}実行結果:
3
3
匿名のインナークラス:匿名の内側クラスは、名前のない内部クラスです。
形式:
className object = new className(){
/*コードブロック*/
};
注:
1。匿名の内部クラスは、親クラスを継承するか、インターフェイスを実装する必要があります。
抽象クラスコードの例:(インターフェイスと同じ)
要約クラスanonytest {int a = 1; int b = 2; public abstract void run();} public class anonyinner {public static void main(string [] args){anonytest a = new anonytest(){// abstract anonymous class public void run(){system.out.println(a+b);}}; a.run();};};};匿名の内部クラスを使用して抽象的なメソッドを実装しない場合:
要約クラスanonytest {int a = 1; int b = 2; public abstract void run();} class anonydemoはanonytestを拡張します{public void run(){system.out.println(a+b);}} public class anonyinner {public static void main(string [] args){anonytest a = new anonydemo(); //オブジェクトを上げますa.run();}}実行結果:
3