Я пытаюсь переопределить метод класса, который используется в API, без его расширения. Есть ли способ сделать это без перекомпиляции исходного кода? Я не могу расширить класс, потому что его экземпляр создается внутри другого класса, а также есть другие классы, которым необходимо его расширить.
Пример:
import A,B,C;
public class Tester{
public static void main(String[] args){
A a = new A();
a.getB().method();
//The object I want to handle is A
//A has-a B and C
//C extends B and is used at some point inside B
//how can I override method() in B?
}
}
^ Решение этой проблемы — это все, что мне нужно
Если вы хотите взглянуть на конкретную проблему, я использую API htmlunit и пытаюсь переопределить метод onAllChildrenAddedToPage() в DomNode. DomNode используется классом WebClient и должен быть преобразован в HtmlElement в какой-то момент внутри WebClient и DomNode. Я создал DomNode2 (который расширяет DomNode) после получения его экземпляра из WebClient, но он выдал исключение ClassCastException, потому что DomNode2 нельзя преобразовать в HtmlElement.