我的java有点生疏,我必须为这个问题实现一个解决方案。
在 A.java 中给出,其中:
public class A implements Cloneable{
protected DataStorage Y = new DataStorage();
public A(DataStorage X, about 20 other inputs of different Object types){
this.Y=X;
}
public static DataStorage getData(){
return this.Y;
}
}
我的目标是在另一个文件 ServletA.java 中,我想在其中检索对象 Y 或 X。通过从 A.java 类进行静态调用...它有效还是有更好的方法?
public class ServletA{
DataStorage Z = A.getData();
}
注意:是的,这无法编译,但是有解决方案吗?
我对解决方案的限制:
- 对 A.java 进行最小程度的更改,因为它是遗留代码库
- A() 构造函数有 20 多个输入,这是一场噩梦
- 我的架构师也不想通过将 A 更改为抽象类来触及它
- 无法在 ServletA.java 中创建 A 的实例
EDIT1:我的问题是是否有一种解决方案可以从 ServletA.java 访问 X,而不需要在 ServletA.java 中创建 A 的实例。上面的代码是一个示例,表明我已经想到了一种方法,但它不起作用。
编辑2:如果您想投反对票,请礼貌地向我询问澄清。谢谢!
最佳答案
如果您只有一个 A 实例,您应该使用 singleton图案。 您的 ServletA 代码应该类似于
public class ServletA {
DataStorage Z = A.getInstance().getData();
}
关于Java棘手的继承和调用类和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615781/