我们可以从具体的 class 创建一个匿名的内部 class 吗?
Can we create an anonymous inner class from a concrete class?
下面的代码中有一些令人惊讶的地方。 ListCell
class 不是抽象的,但我们能够从中创建一个匿名的 class 并覆盖它的方法!这怎么可能?
ListCell<TodoItem> listCell = new ListCell<>() {
@Override
public void updateIndex(int i) {
super.updateIndex(i);
}
};
匿名classes的概念(cf.JLS, §15.9.5)根本就不是related/restricted抽象classes.
new ListCell<>() {}
创建 ListCell
的子 class(具有合成名称)的实例。 Subclassing 是可能的,除非父 class 是最终的。 Subclasses 可以覆盖父 class 的方法,除非它们是最终的。
下面的代码中有一些令人惊讶的地方。 ListCell
class 不是抽象的,但我们能够从中创建一个匿名的 class 并覆盖它的方法!这怎么可能?
ListCell<TodoItem> listCell = new ListCell<>() {
@Override
public void updateIndex(int i) {
super.updateIndex(i);
}
};
匿名classes的概念(cf.JLS, §15.9.5)根本就不是related/restricted抽象classes.
new ListCell<>() {}
创建 ListCell
的子 class(具有合成名称)的实例。 Subclassing 是可能的,除非父 class 是最终的。 Subclasses 可以覆盖父 class 的方法,除非它们是最终的。