1
Byte Buddyが私が追加したアノテーションのデフォルト値を出さないようにする方法はありますか?以下の例をビルドプラグインに基づいて、baz
フィールドの@XmlAttribute
注釈の結果のバイトコードから冗長なrequired
とnamespace
の値を省きたいと思います。Byte Buddyがアノテーションのデフォルト値を出力しないようにすることはできますか?
FOO/Bar.java:
package foo;
import javax.xml.bind.annotation.XmlAttribute;
public class Bar {
@XmlAttribute(name = "qux")
public String qux;
}
ネット/ bytebuddy /テスト/ SimplePlugin.java:
...
public class SimplePlugin implements Plugin {
...
@Override
public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, TypeDescription typeDescription) {
return builder.defineField("baz", String.class, Visibility.PUBLIC)
.annotateField(AnnotationDescription.Builder.ofType(XmlAttribute.class)
.define("name", "baz")
.build());
}
}
FOO/Bar.class:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package foo;
import javax.xml.bind.annotation.XmlAttribute;
public class Bar {
@XmlAttribute(
name = "qux"
)
public String qux;
@XmlAttribute(
name = "baz",
required = false,
namespace = "##default"
)
public String baz;
public Bar() {
}
}