java中匿名类的用例和优点是什么?

java中匿名类的用例和优点是什么?,java,java-8,Java,Java 8,我对匿名类的了解是,当您有任何类或接口,并且只有一些代码需要匿名实现或重写某些类或接口时,它会增加程序的可读性。但我有点困惑,假设将来您需要为不同的类实现相同的接口,那么在这种情况下,您必须重构以前的类,那么匿名类还有其他优势吗?(它提高了性能吗?这意味着什么? 匿名类就是它的名字所暗示的——它没有名字。它将类的声明和创建类的实例结合在一起。 由于匿名类没有名称,因此无法从定义匿名类的类外部实例化对象。事实上,匿名对象只能在其定义的同一范围内实例化 为什么要使用匿名类? 匿名类可以节省时间,减少

我对匿名类的了解是,当您有任何类或接口,并且只有一些代码需要匿名实现或重写某些类或接口时,它会增加程序的可读性。但我有点困惑,假设将来您需要为不同的类实现相同的接口,那么在这种情况下,您必须重构以前的类,那么匿名类还有其他优势吗?(它提高了性能吗?

这意味着什么?

匿名类就是它的名字所暗示的——它没有名字。它将类的
声明
和创建类的
实例
结合在一起。 由于匿名类没有名称,因此无法从定义匿名类的类外部实例化对象。事实上,匿名对象只能在其定义的同一范围内实例化

为什么要使用匿名类?

匿名类可以节省时间,减少定义应用程序所需的。
java
文件的数量。您可能有一个仅在特定情况下使用的类,例如
比较器
。这允许“动态”创建对象

您可能会发现您更喜欢使用匿名类;许多人广泛使用它们在
gui
上实现
侦听器

匿名类定义的语法

此示例演示了传递给Collections类中的sort()方法的比较器的匿名类定义。假设列表是要排序的数据的有效列表

Collections.sort (aList, 
    new Comparator () { // implements the IF 
        public int compare (ObjectType o1, ObjectType o2 ) throws ..{ 
            //.... implementation for compare() 
        } // end of compare() 
    } // end of Comparator implementation
); // closed paren for sort() and end of statement semicolon
规则:

匿名类必须始终扩展一个超类或实现一个接口,但不能有显式的extends或implements子句

匿名类必须实现超类或接口中的所有抽象方法


匿名类总是使用超级类中的默认构造函数来创建实例。

请参阅“如何使用”和“优势”这两个词是不同的,我还问过它是如何提高性能的。@Faizan至少有一部分是从其他来源逐字复制的。参见示例-请在信用到期时给予信用。