代码,如:在Java中,匿名类可以扩展另一个类吗?
protected Interface1 varClass1 = new Interface1() {
但我也想,这个匿名嵌套类也是扩展的类Base
,是这样的:
protected Interface1 varClass1 = new Interface1() extends Base {
....
这是可能在Java中?
代码,如:在Java中,匿名类可以扩展另一个类吗?
protected Interface1 varClass1 = new Interface1() {
但我也想,这个匿名嵌套类也是扩展的类Base
,是这样的:
protected Interface1 varClass1 = new Interface1() extends Base {
....
这是可能在Java中?
匿名类可以实现一个接口或扩展一个类。
一个解决方法是创建一个扩展Base
并实现Interface1
命名类,然后用其作为基类的匿名类:
public abstract class Base1 extends Base implements Interface1 {}
...
protected Interface1 varClass1 = new Base1() {
...
虽然不可能都扩展一个类,实现一个接口,使用delegation可能可以实现什么。
只需在您的匿名类的初始化程序中创建Base
的实例,并使用您实施的方法中的方法Interface1
。
编辑:我的答案假定你只想从Base
继承,因为它的实现,而不是因为它的接口。考虑到将对象分配给Interface1
变量后,Base
的界面不可见,这是一个有效的假设。因此,我认为最好在这里使用委托,而不是创建一个新类。
@EranMedan - 这个问题是专门关于同时做两件事:扩展一个类,同时实现一个接口。另一个问题是关于单独做一个人。 –
@DavidHarkness你是对的,对我来说,早上5点不再是这样 –
对我来说,感觉就像你想要的匿名课是一种精神分裂症。特别是如果它需要与包含类的字段进行交互。我强烈建议你冥想,如果你真的需要的是轻微的重新设计。 – Buhb