Java 匿名类

在 Java 中,我们可以通过匿名类,在不同类名的前提下,直接扩展一个类或接口,并实例化一个对象。在本教程中,我们将通过示例学习 Java 中的匿名类。

在本教程中,我们将通过示例学习 Java 中的匿名类。

Java 匿名类

在 Java 中,我们可以通过匿名类,在不同类名的前提下,直接扩展一个类或接口,并实例化一个对象。匿名类的本质是继承或实现一个现有的类或接口。

匿名类的语法如下:

Type type = new Type() {
  // 类成员
};

匿名类通常扩展子类或实现接口。

说明:

  • Type 是一个现有的类型,可以是:
    • 接口
    • 可以被继承的类
  • Type() { ... } 表示一个匿名类,{ ... } 是类的主体。
  • new Type() { ... } 表示构造了一个匿名类的对象。
  • type 是变量,指向刚刚创建的匿名类对象,其类型是 Type 的子类,也就是匿名类。
  • ; 是赋值语句的结束。

示例 1:扩展类的匿名类

class Polygon {
  public void display() {
    System.out.println("Inside the Polygon class");
  }
}

public class Main {
  public static void main(String[] args) {
    Polygon p =
        new Polygon() {
          public void display() {
            System.out.println("在匿名类中。");
          }
        };
    p.display();
  }
}

输出

在匿名类中。

在上面的例子中,我们创建了一个 Polygon 类, 它只有一个 display() 方法。

然后我们创建了一个匿名类扩展了 Polygon 类并覆盖了 display() 方法。并为匿名类实例化了一个对象 p,然后对象调用 display() 方法。

示例 2:实现接口的匿名类

interface Polygon {
  void display();
}

public class Main {
  public static void main(String[] args) {
    Polygon p =
        new Polygon() {
          public void display() {
            System.out.println("在匿名类中。");
          }
        };
    p.display();
  }
}

输出

在匿名类中。

在上面的例子中,我们创建了一个实现 Polygon 接口的匿名类。

匿名类的优点

  • 在匿名类只在需要的时候才被创建,省去了创建一个常规类的麻烦。也就是说,创建对象是为了执行某些特定任务。

  • 匿名类还帮助我们使代码简洁。