1
homebody는 바이트 - 버디 1.6.9를 사용하여 정적 메서드를 재정의하는 방법을 알려줄 수 있습니까?ByteBuddy를 사용하여 정적 메서드 다시 정의
나는 시도했다이 :
나는 예외 다음있어public class Source {
public static String hello(String name) {return null;}
}
public class Target {
public static String hello(String name) {
return "Hello" + name+ "!";
}
}
String helloWorld = new ByteBuddy()
.redefine(Source.class)
.method(named("hello"))
.intercept(MethodDelegation.to(Target.class))
.make()
.load(getClass().getClassLoader())
.getLoaded()
.newInstance()
.hello("World");
: 스레드에서
예외 "주요"java.lang.IllegalStateException : 클래스 delegation.Source
: 이미로드 유형을 삽입 할 수 없습니다감사합니다.
Rafael, 대상 클래스의 재정의 된 메서드에서 원본 클래스의 hello() 정적 메서드를 리베이스하려는 경우 어떻게 원본 클래스의 원래 정적 메서드를 호출 할 수 있습니까? 정말 고맙습니다 ! –
원본 메소드 앞뒤에 코드를 추가 할 수 있고 조건부로 메소드를 건너 뛸 수있는 'Advice' 클래스를 살펴보십시오. 그 외에는 원래 구현을 유지하기 위해 클래스를 리베이스 할 수만 있습니다. –
Advice 클래스 사용 방법에 대한 예를 알고 계십니까? 감사 ! –