O carregador de classes de definição de uma anotação no nível de classe sempre é um pai do carregador de classes inicial dessa classe?

Suponha o seguinte:

@SomeAnnotation
public interface Foo {
}

Gostaria de saber se é sempre o caso que o carregador de classe definidor deSomeAnnotation é igual ou pai do carregador de classes inicial deFoo.

eu liSeção 5.3 da JVMS v8. mas não tenho certeza do que se aplica aqui. A Seção 5.3.4 fala sobre restrições de carregamento, mas elas parecem não se aplicar a anotações.

A pergunta que estou fazendo é porque código como este:

    Class<?> fooClass = //will in some way obtain a reference to class Foo
    fooClass.getAnnotation(SomeAnnotation.class);

falhará na presença de diferentes carregadores de classe. Eu sei que eu poderia usargetAnnotations e procure na matriz resultante um elemento cujo nome da classe seja igual ao nome deSomeAnnotation. Mas estou pensando se o seguinte também funcionará:

    Class<?> fooClass = //will in some way obtain a reference to class Foo
    fooClass.getAnnotation((Class<? extends Annotation>) fooClass
            .getClassLoader().loadClass(SomeAnnotation.class.getName()));

questionAnswers(1)

yourAnswerToTheQuestion