Java中注释元素的公共修饰符和抽象修饰符有什么区别?
例如,我们可以对注释元素使用访问修饰符public
:
public @interface MyAnnotation {
public String element();// declared as public method
}
我们还可以为注释元素使用访问修饰符abstract
:
public @interface MyAnnotation {
abstract String element();// declared as abstract method
}
我认为默认情况下注释方法是抽象的,也是公开的。
那么这些修饰符的实际影响是什么?
在java中,注解是一种特殊类型的接口。所以它遵循接口的规则和接口方法默认是public
和abstract
。尽管有默认考虑,您仍然可以显式添加 public
和 abstract
修饰符。但它将被认为是多余的。
此外,如果在注释中声明变量,则默认情况下它将是一个final
和static
变量。
没有影响 - 这只是一个多余的声明。例如,与接口的方法相同。
两者都是多余的。如 JLS 中所述,默认情况下,接口的方法是抽象的和公共的。
每个interface
都是隐式abstract
的。该接口隐式声明公共abstract
成员方法。
注释类型是一种特殊的接口。在接口中,所有方法都是隐式的公共和抽象的,但允许显式声明方法是公共的和/或抽象的。但是,将接口方法声明为公共或抽象方法不起作用。