因此,這裏是場景。創建具有完全訪問外部類局部變量的Innerclass
我有一個類A,我希望它的一些方法的行爲有所不同,具體取決於類如何調用。
我現在已經做了是這樣的:
interface Interface{
public void someMethod();
}
class A{
int variable;
Interface getA1(){
return new A1();
}
Interface getA2(){
return new A2();
}
class A1 extends A implements Interface{
public void someMethod(){
variable++;
}
}
class A2 extends A implements Interface{
public void someMethod(){
variable--;
}
}
}
現在有了這個問題是,當getA1()或getA2()被調用,它實際上將返回A1的一個完全新的實例,或A2,其中int變量完全獨立於父類A(當然,我當然知道它是如何工作的)。
所以問題是。是否有可能在java中返回某種內部類,允許您通過它的方法修改外部類中的數據?
關鍵的是讓一個類能夠以不同的方式返回修改該類的接口,具體取決於使用哪種方法創建該接口。
我可能在這裏忽略了一些簡單的東西,抱歉,但它讓我難倒了! :(
編輯:我認爲解釋它的更好的方式是 - 我想直接訪問局部變量,到一個子類(或另一個類),並在原始類中有一個方法可以創建其他類
EDIT2:爲什麼它創建一個單獨的實例時getA1()/ getA2(),可能是因爲類A1和A2被宣佈延長答:這好像如果條款被刪除的擴展的原因,那麼它按預期的方式工作。
除非一個變量是私有的,否則子類將有權訪問它。不管工廠是否屬於基類,都是不同的問題。 –