java - 如何强制 Java 子类定义注解?

标签 java annotations subclass

如果一个类定义了一个注解,是否有可能以某种方式强制其子类定义相同的注解?

例如,我们有一个共享 @Author @interface. 的简单类/子类对 我想做的是强制每个进一步的子类定义相同的 @Author 注释,防止 RuntimeException 在路上的某个地方。

测试类.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 ) );
    }
}

测试子类.java:

@Author( name = "bar" )
public abstract class TestSubClass extends TestClass {}

我知道我可以在运行时枚举所有注释并检查缺少的 @Author,但我真的很想在编译时执行此操作,如果可能的话。

最佳答案

关于java - 如何强制 Java 子类定义注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619332/

相关文章:

java - 用于开始新项目的代码分析工具

java - Spring @async 注释可能无法触发的原因是什么?

java - Spring使用运行时对象设置属性?

java - 为什么 Java 编译器不能从另一个文件中找到类?

java - 从父类(super class)调用子类变量

java - Liferay 与 MarkLogic XDBC 数据库集成

Java,解析字符串 'yyyy-MM-dd' T'HH :mm:ss' to ZonedDateTime without changing time

java - 如何在排序时忽略某个值,使其始终出现在排序列表的底部

java - Play : Using a configuration property as the value of an annotation

objective-c - 将 initWithFrame : trigger init?