확장하지 않고 API에서 사용되는 클래스의 메서드를 재정의하려고합니다. 소스 코드를 다시 컴파일하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 클래스를 확장 할 수 없습니다. 인스턴스가 다른 클래스 내부에서 만들어지기 때문에 클래스를 확장 할 필요가있는 다른 클래스가 있기 때문입니다.확장하지 않고 메서드 재정의 (Java)
예 :
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?
}
}
^나는
당신이 특정 문제를보고 싶을 경우
을 필요로하는 모든, 내가 HtmlUnit과 API를 사용하고 내가 노력하고있어이 문제를 주소 지정 DomNode에서 onAllChildrenAddedToPage() 메서드를 재정의합니다. DomNode는 WebClient 클래스에서 사용되며 WebClient 및 DomNode의 어느 지점에서 HtmlElement로 형변환해야합니다. 나는 DomNode2 (DomNode를 확장)를 WebClient에서 가져온 후에 만들고 있지만 DomNode2를 HtmlElement로 형변환 할 수 없으므로 ClassCastException을 발생시킵니다.
DomNode를 확장하고 onAllChildrenAddedToPage()를 재정 의하여 ClassCastException이 발생하는 이유는 알 수 없습니다. 그러나 htmlunit API를 보면 HtmlElement가 DomNode를 확장합니다. 따라서 DomNode2는 HtmlElement를 확장하고 onAllChildrenAddedToPage()를 재정의 할 수 있습니다. 누군가가 HtmlElement에 개체를 캐스팅하려고하기 때문에 ClassCastException 문제가 해결됩니다. – anonymous
방금 HtmlParagraph를 확장 해 보았습니다 (HtmlElement가 나에게 오류를 주었고, 나쁘다). 그리고 어떤 이유로 든 ClassCastException 오류가 발생했습니다. 나는 DomNode2에게 super라고 불리는 생성자를 주었고 같은 패키지에 넣어 주었다. 정말 이상합니다. 스레드 "main"의 예외 java.lang.ClassCastException : com.gargoylesoftware.htmlunit.html.HtmlParagraph를 com.gargoylesoftware.htmlunit.html.DomNode2로 전송할 수 없음 – user3335154
더 큰 그림을 얻기 위해 무엇을 시도 할 수 있습니까? ? 어쩌면 코드 일부를 게시 할 수도 있습니다. – anonymous