代码如:
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() {
...
虽然不可能同时扩展一个类并实现一个接口,但您可能要做的事情可以使用delegate来实现。
只需在匿名类的初始化程序中创建一个实例,Base
并使用您实现的方法中的方法Interface1
。
编辑:我的回答假设您只想从Base
它的实现继承,而不是因为它的接口。这是一个有效的假设,因为Base
在将对象分配给Interface1
变量后接口不可见。因此,我认为这里最好使用委托而不是创建一个新类。