带有 Byte 伙伴的简单 getter 调用程序
Simple getter invoker with Byte buddy
我只是在学习字节好友,想创建最简单的 getter 调用程序,但不幸的是我找不到如何做。所以,问题:
我有很多 class 扫描,如果我在 class 中找到一个用 FooAnnotation
注释注释的字段,我必须能够获得该值此字段使用此 class 实例 getter 方法。
这是我的代码:
interface GetterInvoker<T, S> {
//this method must `return instance.getterMethod()`;
S getValueFrom(T instance);
}
abstract class AsbtractGetterInvoker implements GetterInvoker {
//...some logic
}
主要代码
//input
Class<?> scannedClass = ...
Field annotatedField = ....
Method getterMethod = ....
//generating class
Class<?> tempClass = new ByteBuddy()
.subclass(AsbtractGetterInvoker.class, ConstructorStrategy.Default.IMITATE_SUPER_CLASS)
.method(named("getValueFrom").and(takesArguments(1)))
.intercept(???????)
.make()
.load(getClass().getClassLoader())
.getLoaded();
谁能告诉我怎么做?
您可以使用 MethodCall
创建这样的实现,它允许您完全做到这一点。
我只是在学习字节好友,想创建最简单的 getter 调用程序,但不幸的是我找不到如何做。所以,问题:
我有很多 class 扫描,如果我在 class 中找到一个用 FooAnnotation
注释注释的字段,我必须能够获得该值此字段使用此 class 实例 getter 方法。
这是我的代码:
interface GetterInvoker<T, S> {
//this method must `return instance.getterMethod()`;
S getValueFrom(T instance);
}
abstract class AsbtractGetterInvoker implements GetterInvoker {
//...some logic
}
主要代码
//input
Class<?> scannedClass = ...
Field annotatedField = ....
Method getterMethod = ....
//generating class
Class<?> tempClass = new ByteBuddy()
.subclass(AsbtractGetterInvoker.class, ConstructorStrategy.Default.IMITATE_SUPER_CLASS)
.method(named("getValueFrom").and(takesArguments(1)))
.intercept(???????)
.make()
.load(getClass().getClassLoader())
.getLoaded();
谁能告诉我怎么做?
您可以使用 MethodCall
创建这样的实现,它允许您完全做到这一点。