在Java中,匿名类可以扩展另一个类吗?

时间:2012-05-07 08:34:31

标签: java class nested extend anonymous

代码如:

protected Interface1 varClass1 = new Interface1() {

但是我也希望这个匿名的嵌套类还扩展了类Base,类似于:

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

这在Java中是否可行?

2 个答案:

答案 0 :(得分:28)

匿名类可以实现一个接口扩展一个类。

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

public abstract class Base1 extends Base implements Interface1 {}

...

protected Interface1 varClass1 = new Base1() {
   ...

答案 1 :(得分:3)

虽然无法扩展类和实现接口,但使用delegation可以实现您可能要执行的操作。

只需在匿名类的初始值设定项中创建Base的实例,并使用Interface1中实现的方法中的方法。

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