Si une classe définit une annotation, est-il possible de forcer sa sous-classe à définir la même annotation?Comment forcer une sous-classe Java à définir une annotation?
Par exemple, nous avons une simple paire classe/sous-classe qui partagent la @Author @interface.
Ce que je voudrais faire est la force chaque sous-classe plus pour définir la même annotation @Author
, ce qui empêche une RuntimeException
quelque part sur la route.
TestClass.java:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface Author { String name(); }
@Author(name = "foo")
public abstract class TestClass
{
public static String getInfo(Class<? extends TestClass> c)
{
return c.getAnnotation(Author.class).name();
}
public static void main(String[] args)
{
System.out.println("The test class was written by "
+ getInfo(TestClass.class));
System.out.println("The test subclass was written by "
+ getInfo(TestSubClass.class));
}
}
TestSubClass.java:
@Author(name = "bar")
public abstract class TestSubClass extends TestClass {}
Je sais que je peux énumérer toutes les annotations à l'exécution et vérifiez les disparus @Author
, mais je voudrais vraiment faire ceci au moment de la compilation, si possible.
Comment pourriez-vous faire cela? J'aimerais le voir. –
Le lien ne fonctionne pas. – Raj