Si una clase definió una anotación, ¿es de alguna manera posible forzar a su subclase a definir la misma anotación?¿Cómo fuerzo una subclase Java para definir una Anotación?
Por ejemplo, tenemos un simple par de clase/subclase que comparten el @Author @interface.
Lo que me gustaría hacer es obligar a cada subclase más para definir el mismo @Author
anotación, la prevención de una RuntimeException
algún lugar del camino.
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 {}
Sé que puedo enumerar todas las anotaciones en tiempo de ejecución y comprobar la falta @Author
, pero realmente me gustaría hacer esto en tiempo de compilación, si es posible.
¿Cómo pudiste hacer esto? Me gustaría verlo. –
El enlace no funciona. – Raj