在我的应用程序中,Java 类通过一些 jar 与 Cobol 进行通信。我使用引用 jar 内部类(其中指定版本)的导入来调用它们。例如:
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS00.C_YUCCS00;
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS00.INHEADER;
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS00.INPBST;
然后,在方法中使用它(我每次都必须更改版本的其他点):
public void doSomething(int param1, C_YUCCS00 msg) {
...
}
我的问题是:这些 jar 中的每一个都被导入到许多 Java 类中(例如 100-150 个)。如果“jar”的版本(实际上是内部类的名称)发生变化,我将必须导入新的 jar,因此,要像这样调整导入:
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS01.C_YUCCS01;
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS01.INHEADER;
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS01.INPBST;
这意味着要进行大量更改并对许多类进行版本控制。
你知道有什么办法可以解决这个问题吗?有一种方法可以将导入放入一个单独的 Java 类中,仅用于导入并调用该类吗? 预先感谢您
最佳答案
一种解决方案是使用包含版本化类并具有与基础版本化类相同的公共(public)方法的代理类。然后,在您的代码部分中使用每个代理类,而不是版本化类。不清楚的一部分是如何初始化代理类,因为从问题中不清楚版本化类和应用程序类之间的交互是如何发生的
import com.dsi.business.SSA_YU.integration.jdo.P_YUCCS00.C_YUCCS00;
public class C_YUCCProxy {
private C_YUCCS00 underlying;
//First example of constructor if new objects are created
public C_YUCCProxy() {
this.underlying = new C_YUCCS00();
}
//Second example using existing object
public C_YUCCProxy(C_YUCCS00 object) {
this.underlying = object;
}
public void doLogic(int value) {
underlying.doLogic(value);
}
public String getStringValue() {
return underlying.getStringValue();
}
//... all other public methods
}
然后在应用程序代码的其他部分
public void doSomething(int param1, C_YUCCProxy msg) {
msg.doLogic(42);
String response = msg.getStringValue();
}
关于java - 处理必须在许多类中更改的导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865018/