Hallo,
ich hab als Vorgabe für ein Projekt eine library gegeben. Ist es möglich eine der enthaltenen Klassen zur Laufzeit zu ändern und die geänderte Klasse in der JVM zu benutzen? Konkret will ich einige Felder hinzufügen, sowie eine bestehende Methode ändern.
Subclassing geht leider nicht, da in der library selber an einigen Stellen Instanzen dieser Klasse erstellt werden auf die ich aber auch Zugriff brauche. Hab mir schon cglib angeguckt, allerdings müssten Instanzen der Veränderten Klasse über die Enhancer Klasse erstellt werden.
Ist es also möglich eine Klasse global für die JVM zu ändern, sodas die bestehenden Aufrufe unverändert bleiben können?
Besten Dank
Alex
ich hab als Vorgabe für ein Projekt eine library gegeben. Ist es möglich eine der enthaltenen Klassen zur Laufzeit zu ändern und die geänderte Klasse in der JVM zu benutzen? Konkret will ich einige Felder hinzufügen, sowie eine bestehende Methode ändern.
Subclassing geht leider nicht, da in der library selber an einigen Stellen Instanzen dieser Klasse erstellt werden auf die ich aber auch Zugriff brauche. Hab mir schon cglib angeguckt, allerdings müssten Instanzen der Veränderten Klasse über die Enhancer Klasse erstellt werden.
Java:
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(Someclass.class);
enhancer.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object target, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
// [...]
}
});
Someclass instance = (Someclass) enhancer.create(); // Die Instanzen in der library selbst können so ja nicht erstellt werden
Ist es also möglich eine Klasse global für die JVM zu ändern, sodas die bestehenden Aufrufe unverändert bleiben können?
Besten Dank

Alex