Byte Buddyを使用してインスタンスフィールドの値を設定する方法を理解しようとしています。ドキュメントには、Byte BuddyでinstanceFieldを設定する
という値が割り当てられています。このような動的クラスのインスタンスでメソッドを呼び出す前に、必ずこのフィールドに値を割り当ててください。それ以外の場合、メソッドの委譲によってNullPointerExceptionが発生します。
しかし、ドキュメントやユニットテストでは、これを行う方法はわかりません。
私の動的なクラスがある:
new ByteBuddy().subclass(AbstractService.class)
.name(serviceName)
.method(ElementMatchers.named("start").and(
ElementMatchers.takesArguments(0)))
.intercept(
MethodDelegation.toInstanceField(service, "consumer")
.filter(ElementMatchers.isAnnotatedWith(Start.class)))
.method(ElementMatchers.named("stop").and(
ElementMatchers.takesArguments(0)))
.intercept(
MethodDelegation.to(instance).filter(
ElementMatchers.isAnnotatedWith(Stop.class)))
.make();
私は、任意のコンストラクタを傍受し、MethodDelegation
で@FieldProxy
を使用するために答えを別のポストを参照してくださいが、私はそれを行う方法が表示されません。
java.lang.IllegalArgumentExceptionが:ときに[]のいずれも、基本的に