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

use*_*430 26 java nested anonymous class extend

代码如:

protected Interface1 varClass1 = new Interface1() {
Run Code Online (Sandbox Code Playgroud)

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

protected Interface1 varClass1 = new Interface1() extends Base {
....
Run Code Online (Sandbox Code Playgroud)

这在Java中可行吗?

NPE*_*NPE 28

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

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

public abstract class Base1 extends Base implements Interface1 {}

...

protected Interface1 varClass1 = new Base1() {
   ...
Run Code Online (Sandbox Code Playgroud)

  • +1,很好的解决方案!我唯一想补充的是,如果你需要这样做,那么它是一个暗示你超出了匿名类的预期用途,并且应该考虑完全命名的内部类. (4认同)