我对Anonymous类的了解是,当你有任何类或接口时,只有部分代码需要实现或覆盖某些类或接口匿名,它会增加程序的可读性。但我有点困惑,假设将来你需要为不同的类实现相同的接口,所以在这种情况下你必须重构你以前的类,所以有没有其他的Anonymous类的优点?(它是否提高了性能?)
答案 0 :(得分:3)
这是什么意思?
匿名类正是它的名称实现 - 它没有名称。它将类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
<强>规则:强>
匿名类必须始终扩展超类或实现接口,但它不能具有显式的extends或implements子句。
匿名类必须实现超类或接口中的所有抽象方法。
匿名类总是使用超类中的默认构造函数来创建实例。