所以这是场景。
我有一个 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 完全分离(duh,愚蠢的我当然这就是它的工作原理)。
所以问题是。java中是否有可能返回某种内部类,允许您通过它的方法修改外部类中的数据?
关键是有一个单一的类,它可以返回以不同方式修改该单一类的接口,具体取决于用于创建该接口的方法。
我可能在这里忽略了一些简单的事情,对不起,但这让我很困惑!:(
编辑:我认为解释它的更好方法是 -我想直接访问局部变量、子类(或另一个类),并在原始类中有一个可以创建另一个类的方法。
EDIT2:它在 getA1()/getA2() 时创建单独实例的原因可能是因为类 A1 和 A2 被声明为扩展 A。似乎如果删除了 extends 子句,那么它会按预期工作。