匿名类是指没有类名的内部类,必须在创建时使用 new
语句来声明类。
匿名内部类在 new
的时候,相当于创建子类型的实例。
假设没有匿名内部类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package com.redisc;
abstract class Animal{ public abstract void run();
public void go(){ System.out.println("go"); } }
class Cat extends Animal{ @Override public void run() { System.out.println("cat run"); } }
public class Test {
public static void main(String[] args) { Cat cat = new Cat(); cat.run(); } }
|
用匿名内部类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package com.redisc;
abstract class Animal{ public abstract void run();
public void go(){ System.out.println("go"); } }
public class Test {
public static void main(String[] args) { Animal cat = new Animal() { @Override public void run() { System.out.println("cat go"); } }; cat.run(); } }
|
常见应用场景
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package com.redisc;
interface Animal{ void run(); }
public class Test {
public static void run(Animal animal){ animal.run(); }
public static void main(String[] args) { Animal cat = new Animal() { @Override public void run() { System.out.println("cat go"); } }; run(cat); run(new Animal() { @Override public void run() { System.out.println("doge go"); } });
} }
|