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

2022-09-01 14:32:45

代码像:

protected Interface1 varClass1 = new Interface1() {

但我也希望这个匿名嵌套类也扩展该类,如下所示:Base

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

这在Java中可能吗?


答案 1

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

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

public abstract class Base1 extends Base implements Interface1 {}

...

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

答案 2

虽然不可能同时扩展类和实现接口,但可以使用委派来实现您可能要执行的操作。

只需在匿名类的初始值设定项中创建一个实例,然后使用从 中实现的方法中的方法。BaseInterface1

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