28

代码如:

protected Interface1 varClass1 = new Interface1() {

但我也希望这个匿名嵌套类也扩展类Base,例如:

protected Interface1 varClass1 = new Interface1() extends Base {
....

这在Java中可能吗?

4

2 回答 2

30

匿名类既可以只实现一个接口,也可以扩展一个类。

一种解决方法是创建一个扩展Base和实现的命名类,Interface1然后将其用作匿名类的基类:

public abstract class Base1 extends Base implements Interface1 {}

...

protected Interface1 varClass1 = new Base1() {
   ...
于 2012-05-07T08:38:21.373 回答
3

虽然不可能同时扩展一个类并实现一个接口,但您可能要做的事情可以使用delegate来实现。

只需在匿名类的初始化程序中创建一个实例,Base并使用您实现的方法中的方法Interface1

编辑:我的回答假设您只想从Base它的实现继承,而不是因为它的接口。这是一个有效的假设,因为Base在将对象分配给Interface1变量后接口不可见。因此,我认为这里最好使用委托而不是创建一个新类。

于 2012-05-07T08:45:33.910 回答