Mam możliwość rozszerzenia klasy podczas kompilacji, ale muszę mieć możliwość utworzenia instancji tej podklasy w czasie wykonywania przy użyciu instancji nadklasy, która została już utworzona.Java: Rozszerzanie klasy w środowisku wykonawczym
Teoretycznie powinno być możliwe, ponieważ konstruktory superklasy są już wywoływane przed konstruktorem podklasy.
Nie mam wystarczającego dostępu do programu, aby zmienić instancję na moją podklasę i przerwać oryginalną instancję.
Przypadek użycia: Istnieje istniejąca tablica wystąpień klasy X. Mój kod jest ładowany po. Muszę nadpisać jedną z metod jednej z instancji X, gdy moja załadowana podklasa Y rozszerza X. Program nadrzędny uzyskuje dostęp do obiektów tylko przez tę tablicę, więc chcę zastąpić ten element tablicy moją instancją Y, ale musi zachowuj się tak, jakby był oryginalnie utworzony w tej macierzy. Nie mogę po prostu zamknąć instancji nadklasy i przekazywać połączeń, i istnieją trudne komplikacje z przywracaniem superklasy.
Mam nadzieję, że jest bardziej zrozumiały.
Proszę ponownie sformułować pytanie. –
Czy możesz również podać przykład tego, co faktycznie chcesz osiągnąć? Zamiast tylko pożądanej, ale możliwie niemożliwej, metody robienia tego. – millimoose
Załóż istniejącą linię "public static Foo foo = new Foo();" że nie mogę się zmienić. Mam "public class Bar extend Foo" i chcę zrobić "foo = new Bar (...)" tak, jakby było tak, jakby pierwszy wiersz był "public static Foo foo = new Bar()". – JAKJ