Zastąp implementację klasy instancji bez dotykania kodu (java)

Mam starszy kod, którego nie chcę dotykać.

public class LegacyCode{
    public LegacyCode() {
        Service s = new ClassA();
        s.getMessage();
    }
}

GdzieClassA zapewnia zgłoszenie serwisowe CORBA.

public class ClassA implements Service{
    @Override
    public String getMessage() {
       // Make CORBA service call...
       return "Class A";
    }
}

I interfejsService wygląda jak;

public interface Service {
    String getMessage();
}

Dla celów testowych chcę zastąpić implementacjęService (wLegacyCode wprowadzony przezClassA) z odgałęzieniem.

public class ClassB implements Service {
    @Override
    public String getMessage() {
        return "Stub Class B";
    }
}

Jak na razie dobrze. Ale czy możliwe jest ładowanie bez żadnych modyfikacji pokazanego wcześniej koduClassB zamiastClassA w instancjiClassA?

// In my test workbench
new LegacyCode(); // "Stub Class B"

Próbowałem napisać niestandardowy program ładujący klasy i załadować go przy starcie aplikacji za pomocą argumentów java vm, ale tylko pierwszej klasy (tutajLegacyCode) został załadowany przez ten program ładujący.

Z góry dziękuję

questionAnswers(3)

yourAnswerToTheQuestion