作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有(伪代码)这样的东西:
final Class<OUT> newClass = (Class<OUT>) new ByteBuddy()
.subclass(Object.class)
.name(newName)
.implement(SomeInterface.class, SomeOtherInterface.class)
.method(ElementMatchers.isMethod())
.intercept(
ExceptionMethod.throwing(UnsupportedOperationException.class,
"calling this method is not supported"))
// in fact I am matching for more than a single method here
.method(ElementMatchers.named("getUuid"))
.intercept(
MethodDelegation.toInstanceField(SomeOtherInterface.class, "delegate"))
.make()
.load(aBusinessEntityClass.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
我当前的问题是:我需要我的delegate 字段volatile。我怎样才能做到这一点?
最佳答案
toInstanceField
API 已随 Byte Buddy 1.5.0 一起退役,取而代之的是新的检测 API,您可以在其中显式定义字段:
new ByteBuddy()
.defineField("delegate", SomeOtherInterface.class, VOLATILE)
.method(ElementMatchers.named("getUuid"))
.intercept(MethodDelegation.toField("delegate"));
这允许做其他事情,例如添加注释等。
现在所有实现
都实现了这种方法。新版本今天发布。
关于java - 字节好友 : How to do method delegation/forwarding to a volatile field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124516/
我是一名优秀的程序员,十分优秀!