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 来解析这些描述。