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

Moh*_*zan -2 java java-8

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

Meh*_*lik 6

这是什么意思?

匿名类正如它的名字所暗示的那样——它没有名字。它在一个步骤中结合了类declaration和类的创建instance。由于匿名类没有名称,因此不能从定义匿名类的类的外部实例化对象。事实上,匿名对象只能在定义它的同一范围内实例化。

为什么要使用匿名类?

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

你可能会发现你更喜欢使用匿名类;许多人用他们广泛实施listeners的GUIs。

匿名类定义的语法

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

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
Run Code Online (Sandbox Code Playgroud)

规则:

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

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

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