在../java/lang/Override.java
中使用此jdk代码,
package java.lang;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
只有注释声明,java编译器足够智能检测错误(编译时):
The method toString123() of type Example must override or implement a supertype method
在下面的问题代码中。
package annotationtype;
public class Example {
@Override public String toString() {
return "Override the toString() of the superclass";
}
@Override public String toString123() {
return "Override the toString123() of the superclass";
}
public static void main(String[] args) {
}
}
Override
的注释声明只是编译成,
interface java.lang.Override extends java.lang.annotation.Annotation{
}
只不过是interface
。
所以,
interface java.lang.Override
语法如何帮助java编译器在编译时检测上述错误?
答案 0 :(得分:6)
触发编译错误的实现并不在于注释,它位于Java编译器中。
如果您想编写自己的类似注释处理器,可以使用注释处理器API:http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html
答案 1 :(得分:5)
只不过是一个界面。
所以,
接口java.lang.Override语法如何帮助java编译器 在编译时检测上面的错误?
没错。 Override
只不过是一个界面。实际工作由java编译器完成。编译器如何执行此操作未指定。
以下是一些说明如何使用AnnotationProcessor
实现与@Override
类似的内容的链接: