代碼,如:在Java中,匿名類可以擴展另一個類嗎?
protected Interface1 varClass1 = new Interface1() {
但我也想,這個匿名嵌套類也是擴展的類Base
,是這樣的:
protected Interface1 varClass1 = new Interface1() extends Base {
....
這是可能在Java中?
代碼,如:在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() {
...
雖然不可能都擴展一個類,實現一個接口,使用delegation可能可以實現什麼。
只需在您的匿名類的初始化程序中創建Base
的實例,並使用您實施的方法中的方法Interface1
。
編輯:我的答案假定你只想從Base
繼承,因爲它的實現,而不是因爲它的接口。考慮到將對象分配給Interface1
變量後,Base
的界面不可見,這是一個有效的假設。因此,我認爲最好在這裏使用委託,而不是創建一個新類。
@EranMedan - 這個問題是專門關於同時做兩件事:擴展一個類,同時實現一個接口。另一個問題是關於單獨做一個人。 –
@DavidHarkness你是對的,對我來說,早上5點不再是這樣 –
對我來說,感覺就像你想要的匿名課是一種精神分裂症。特別是如果它需要與包含類的字段進行交互。我強烈建議你冥想,如果你真的需要的是輕微的重新設計。 – Buhb