我刚刚学习字节伙伴,想创建一个最简单的getter invoker,但是,很遗憾的是找不到怎么做。那么,问题来了。
我有很多类,我扫描了一下 如果我在一个类中发现一个字段,上面注有 FooAnnotation
注解我必须能够使用这个类的实例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
它允许你这样做。