带有Byte buddy的简单getter invoker

问题描述 投票:0回答:1

我刚刚学习字节伙伴,想创建一个最简单的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();

谁能说说怎么做?

java byte-buddy
1个回答
1
投票

你可以用以下方法创建这样一个实现 MethodCall 它允许你这样做。

© www.soinside.com 2019 - 2024. All rights reserved.