我有不想接触的遗留代码。
public class LegacyCode{
public LegacyCode() {
Service s = new ClassA();
s.getMessage();
}
}
WhereClassA
提供 CORBA 服务调用。
public class ClassA implements Service{
@Override
public String getMessage() {
// Make CORBA service call...
return "Class A";
}
}
界面Service
看起来像;
public interface Service {
String getMessage();
}
出于测试目的,我想用存根替换Service
(在LegacyCode
实现中)的实现。ClassA
public class ClassB implements Service {
@Override
public String getMessage() {
return "Stub Class B";
}
}
到目前为止,一切都很好。但是是否可以在不修改显示的遗留代码ClassB
而不是ClassA
实例化的情况下加载ClassA
?
// In my test workbench
new LegacyCode(); // "Stub Class B"
我尝试编写一个自定义类加载器并在应用程序启动时通过 java vm 参数加载它,但该加载器仅LegacyCode
加载了第一个类(此处)。
提前致谢