gpt4 book ai didi

java - @Override 不强制在重写方法中使用枚举注释

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:45 25 4
gpt4 key购买 nike

有没有办法强制编译器检查我在子方法中是否使用与父方法中相同的注释。如果我使用 @NotNullString 一切都会按我的预期工作。

public static final int FIRST_ENUM = 0;
public static final int SECOND_ENUM = 1;

@IntDef(value = {
FIRST_ENUM,
SECOND_ENUM
})
@Retention(RetentionPolicy.SOURCE)
public @interface MyEnum {
}

class Parent {
public void method(@MyEnum int a) {
}
}

class Child extends Parent {
@Override
public void method(int a) { // This is valid otherwise there is no @MyEnum
}
}

尽管我没有覆盖所有注释,但此代码是有效的。

最佳答案

为了让编译器检查注释的一致性,您必须在编译期间运行注释处理器。您可以使用标准 javac -processor 标志来执行此操作。当在没有注释处理器的情况下运行时,编译器会将大多数注释写入 .class 文件,但不会验证其语义。

您可以定义自己的注释处理器,或使用其他人编写的注释处理器。Fake Enum Checker Checker Framework的可以在编译时验证 @MyEnum 注释的正确使用。

关于java - @Override 不强制在重写方法中使用枚举注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com