当前位置:网站首页 > 技术博客 > 正文

java匿名内部类和lambda表达式



本文讨论 Java 中的 Anonymous Inner 类及其用途。

匿名这个词的意思是 - 未知的名字。Java 匿名内部类也是如此。

没有名称且我们只需要为其创建单个对象的内部类称为 Java 匿名内部类。当我们必须做一些额外的事情(例如从类或接口重载方法)时必须创建对象的实例时,它很有用。

我们可以通过使用 Java 匿名内部类来做到这一点,而无需创建该类的子类。

换句话说,一个没有名字的类被称为 Java 匿名内部类。通常,每当我们创建一个新类时,它都有一个名称。

因此,Java 匿名内部类不用于创建新类。相反,我们用于覆盖类或接口的方法。

它们在图形编程中也很有用,我们为侦听器接口编写实现类。

Java 匿名内部类的语法类似于构造函数的调用,只是类定义也存在于代码块中。

语法:

这里, 指的是一个抽象/具体的类或一个接口。为了更好地理解匿名内部类的概念,让我们看看它与常规 Java 类有何不同。

  • 我们可以使用普通类实现任意数量的接口,但匿名内部类一次只能实现一个接口。
  • 一个常规类可以扩展另一个类并同时实现多个接口。而另一方面,匿名内部类一次只能做这些事情中的一件。
  • 构造函数的名称与类的名称相同。这意味着我们可以在常规类中编写任意数量的构造函数,但对于匿名内部类则不然。

要了解有关 Java 内部类的更多信息,请参阅此文档。

匿名内部类也像 Java 中的任何本地类一样捕获变量。对局部变量的访问与封闭类相同。

封闭类的成员可由匿名类访问。但是,它不能访问那些不是 final 的局部变量(即使是那些存在于其封闭范围内的变量)。

此外,如果我们在匿名类中声明任何类型,它会隐藏在该范围内具有相同名称的其他声明。匿名内部类也有一些限制。

  • 匿名内部类不允许声明静态初始化器或成员接口。
  • 如果静态成员是常量变量,它们可以是匿名类的一部分。

它得出的结论是,我们可以在匿名类中声明一个字段、额外的方法、实例初始化程序和本地类。

我们可以使用两种主要方法来创建匿名内部类。这些包括使用:

  • 一个类(抽象或具体)
  • 一个界面

让我们一一看看。

首先,看下面的例子。

输出:

在这里,创建了一个类,其名称由编译器决定。该类扩展了 类并实现了 方法。

匿名类的对象是 。它是匿名类型 类的引用变量。请注意,我们将其保存为 以进行编译。

下面的代码是编译器如何生成内部类。

在上一节中,我们使用了一个类。但是在这里,我们将使用匿名内部类的接口。让我们通过一个例子来理解这一点。

输出:

在这里,创建了一个类,其名称由编译器决定。这个类实现了接口 Demonstration 并给出了 方法的实现。

匿名类的对象是 。它是 Demonstration 类型的引用变量。请注意,我们将其保存为 以进行编译。

下面的代码是编译器如何生成内部类。

匿名内部类根据声明和行为分为 3 种类型。

  • 扩展类的匿名内部类。
  • 实现接口的匿名内部类。
  • 匿名内部类在方法/构造函数参数中定义。

让我们一一讨论这三种类型。

我们可以通过扩展一个 Thread 类来创建一个线程,我们也可以有一个匿名的内部类来扩展一个类。

我们在这里使用 关键字来创建一个引用父类类型的对象。看下面的例子。

输出:

我们可以通过实现 Runnable 接口来创建线程,匿名内部类也可以实现接口。我们使用 关键字来创建一个引用接口类型的匿名内部类对象。

输出:

方法或构造函数参数中的匿名内部类可用于 (图形用户界面)应用程序。在这里,我们使用匿名内部类作为参数并将其传递给方法或构造函数。

这是一个例子。

输出:

匿名内部类关闭了方法的局部变量,这是对内部类的额外优势。此外,这些类减少了冗长并提供了可重用性。

此外,这些类可以帮助开发人员,因为他们不必自己为每个类查找名称。我们可以同时使用匿名内部类声明和实例化一个类。

总的来说,匿名内部类是 Java 的优势之一。

要了解有关 Java 中匿名内部类的更多信息,请参阅此文档。

在本文中,我们讨论了 Java 匿名内部类。我们看到了常规类和匿名内部类之间的区别。

我们还讨论了 Java 匿名内部类的用法和优点。此外,我们通过代码和示例了解了实现和语法。我们甚至了解了各种类型的 Java 匿名内部类。

总之,Java 中的匿名内部类通过提供可重用性和减少冗长,增加了语言的功能性和多功能性。

版权声明


相关文章:

  • c语言结构体中的数组初始化2024-12-26 22:30:03
  • phython怎么安装2024-12-26 22:30:03
  • 小程序码 生成2024-12-26 22:30:03
  • 公式编辑器破解版下载2024-12-26 22:30:03
  • 新建okr的过程中,我们的o可能来自2024-12-26 22:30:03
  • 异步fifoverilog代码2024-12-26 22:30:03
  • 空间尺度比例2024-12-26 22:30:03
  • iframe有什么用2024-12-26 22:30:03
  • automake autoconf2024-12-26 22:30:03
  • rman备份文件格式2024-12-26 22:30:03