bytebuddy: 注释已经构建 class
bytebuddy: annotate already builded class
我有超级class和这个超级class的一些child。
我需要将 superclass 注释为 @XmlSeeAlso,这需要作为 child classes 的参数数组。
但是对于 create childs classes,我需要加载 super,它还没有构建。
有循环依赖。
有可能在没有这个注解的情况下构建所有 classes,然后再进行注解吗?作为下一阶段,当所有 class 都可用但未注释时?
@XmlSeeAlso(value = {ExtFoo.class, ExtFoo1.class})
class Foo {
//...
}
class ExtFoo extends Foo {
//..
}
class ExtFoo1 extends Foo {
//...
}
public static void main(String[] args) {
new ByteBuddy()
.subclass(Object.class)
.annotateType(new XmlSeeAlso(){
@Override
public Class<? extends Annotation> annotationType() {
return XmlSeeAlso.class;
}
@Override
public Class[] value() {
return new Class[0];//how to get childs of foo classes, when self foo not ready???
}
}).make().load(...);
....;
}
您可以使用 AnnotationDescription.Builder 并使用 TypeDescriptions 来表示类型。您可以使用 TypePool.Default 来解析这些描述。
我有超级class和这个超级class的一些child。 我需要将 superclass 注释为 @XmlSeeAlso,这需要作为 child classes 的参数数组。 但是对于 create childs classes,我需要加载 super,它还没有构建。 有循环依赖。 有可能在没有这个注解的情况下构建所有 classes,然后再进行注解吗?作为下一阶段,当所有 class 都可用但未注释时?
@XmlSeeAlso(value = {ExtFoo.class, ExtFoo1.class})
class Foo {
//...
}
class ExtFoo extends Foo {
//..
}
class ExtFoo1 extends Foo {
//...
}
public static void main(String[] args) {
new ByteBuddy()
.subclass(Object.class)
.annotateType(new XmlSeeAlso(){
@Override
public Class<? extends Annotation> annotationType() {
return XmlSeeAlso.class;
}
@Override
public Class[] value() {
return new Class[0];//how to get childs of foo classes, when self foo not ready???
}
}).make().load(...);
....;
}
您可以使用 AnnotationDescription.Builder 并使用 TypeDescriptions 来表示类型。您可以使用 TypePool.Default 来解析这些描述。