我正在自学java,我真的很喜欢它,但是我来到了“Anonymous Class”主题,而我正试图从我的书中所说的,何时,甚至在哪里使用它。是一个非常受欢迎的课程,但我似乎无法理解它,我知道如何创建它们。但我只是在寻找更多的信息,所以我可以开始在我的课程中实现它们。
我真的很感激一些例子,以及关于何时使用它们的更多解释。
答案 0 :(得分:8)
首先,你永远不会需要一个匿名类。您始终可以创建命名类。当你刚开始时,了解匿名类的主要原因是在你阅读的代码中识别它们。
如果你想创建一些只使用一次的对象,你就会使用一个匿名类(因此不值得给这个类型命名,把它放在自己的文件中等等)。大多数情况下,它们在事件驱动编程中派上用场,例如使用Swing。您的事件处理程序通常是一次性的,特定于您将其插入的控件,因此没有必要给它起一个名字。
对于事件处理程序,通常需要访问周围的对象,因此方便事件处理程序成为内部类,并且它对周围上下文的引用意味着它根本不可重用。
良好的起始示例位于the Oracle Java tutorial。 java.io包中的类FileFilter和FilenameFilter通常与匿名类一起使用,以指定过滤器应返回的文件。
在Java 8中lambdas为您提供了一种更好的方法来创建只使用一种方法的一次性类实例。
答案 1 :(得分:0)
如果您编写了一个命名类SomeClass
,那么意识到您只需要编写new SomeClass
一次,而使用匿名类通常更有意义。
如果类的主体很短(否则可读性受损),并且如果你不能使用lambda或方法引用,那么你应该这样做。