Wenn eine Klasse eine Anmerkung definiert hat, ist es irgendwie möglich, ihre Unterklasse zu zwingen, die gleiche Anmerkung zu definieren?Wie erzwinge ich eine Java-Unterklasse, um eine Anmerkung zu definieren?
Zum Beispiel haben wir ein einfaches Klasse/Unterklasse-Paar, das die @Author @interface.
Was teilt ich mag ist, jede weitere Unterklasse zwingen, dasselbe tun @Author
Anmerkung zu definieren, ein RuntimeException
irgendwo auf der Straße zu verhindern.
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 {}
Ich weiß, dass ich alle Anmerkungen zur Laufzeit und prüfen, ob die fehlenden @Author
aufzählen kann, aber ich würde wirklich gerne tun Dies zur Zeit der Kompilierung, wenn möglich.
Wie konnten Sie das tun? Ich würde es gerne sehen. –
Der Link funktioniert nicht. – Raj