匿名 类,何时何地?

Anonymous Classes, When and Where?

我正在自学 java,我真的很喜欢它,但是我已经谈到了 "Anonymous Class" 主题,我试图了解您何时何地会使用它, 从我的书中说这是一个非常受欢迎的 class,但我似乎无法理解它,我知道如何创建它们。但我只是在寻找更多信息,所以我可以开始在我的 classes 中实施它们。

我非常希望能提供一些示例,以及关于何时使用它们的更多解释。

首先,您永远不需要匿名class。您始终可以创建一个命名的 class。当您刚开始时,了解匿名 classes 的主要原因是在您阅读的代码中识别它们。

在您想要创建某个对象仅使用一次的情况下,您可以使用匿名 class(因此不值得为类型命名,将其放在自己的文件中,等等。 ).大多数情况下,它们在事件驱动编程中派上用场,例如使用 Swing。您的事件处理程序通常是一次性的,特定于您将其插入的控件,因此没有必要为其命名。

对于事件处理程序,通常需要访问周围的对象,因此将事件处理程序作为内部 class 很方便,并且它对周围上下文的引用意味着它根本不可重用。

好的入门示例在 the Oracle Java tutorial 中。 java.io 包中的 classes FileFilter 和 FilenameFilter 通常与匿名 classes 一起使用,以指定过滤器应该过滤哪些文件 return.

在 Java 8 lambdas 中为您提供了一种更好的方法来仅使用一种方法创建 classes 的一次性实例。

如果你写一个命名的 class SomeClass,然后意识到你只需要写一次 new SomeClass,通常使用匿名的 class 更有意义.

只有当 class 的主体很短(否则可读性会受到影响)并且您不能使用 lambda 或方法引用时才应该这样做。