それではシナリオです。
クラス 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 が A を拡張するように宣言されたためです。 extends 句を削除すると、期待どおりに動作するようです。