代码如:
protected Interface1 varClass1 = new Interface1() {
但是我也希望这个匿名的嵌套类还扩展了类Base
,类似于:
protected Interface1 varClass1 = new Interface1() extends Base {
....
这在Java中是否可行?
答案 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
的界面不可见,这是一个有效的假设。因此,我认为最好在这里使用委托而不是创建一个新类。