在Java中,匿名类可以扩展另一个类吗?
代码像:
protected Interface1 varClass1 = new Interface1() {
但我也希望这个匿名嵌套类也扩展该类,如下所示:Base
protected Interface1 varClass1 = new Interface1() extends Base {
....
这在Java中可能吗?
代码像:
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() {
...
虽然不可能同时扩展类和实现接口,但可以使用委派来实现您可能要执行的操作。
只需在匿名类的初始值设定项中创建一个实例,然后使用从 中实现的方法中的方法。Base
Interface1
编辑:我的答案假设你只想从中继承,因为它的实现,而不是因为它的接口。这是一个有效的假设,因为在将对象分配给变量后,接口不可见。因此,我认为最好在此处使用委派,而不是创建新类。Base
Base
Interface1