如何实现类似于@Override java注解的东西?
How to implement something similar to the @Override java annotation?
在 ../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 编译器在编译时检测到上述错误?
引发编译错误的实现不在注解,在Java编译器
如果您想编写自己的类似注解处理器,您可以使用注解处理器 API:http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html
which is nothing more than an interface.
So,
How does interface java.lang.Override syntax help java compiler to
detect above error at compile time?
没错。 Override
只不过是一个接口。实际工作由 java 编译器完成。未指定编译器如何执行此操作。
这里有一些链接解释了如何使用 AnnotationProcessor
来实现类似于 @Override
的东西:
- Processor Java doc
- Java annotation processing tool
- Code generation using AnnotationProcessor
- Annotation Processor, generating a compiler error
- Source code analysis using Java 6 API
- Playing with Java annotation processing
在 ../java/lang/Override.java
、
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 编译器在编译时检测到上述错误?
引发编译错误的实现不在注解,在Java编译器
如果您想编写自己的类似注解处理器,您可以使用注解处理器 API:http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html
which is nothing more than an interface.
So,
How does interface java.lang.Override syntax help java compiler to detect above error at compile time?
没错。 Override
只不过是一个接口。实际工作由 java 编译器完成。未指定编译器如何执行此操作。
这里有一些链接解释了如何使用 AnnotationProcessor
来实现类似于 @Override
的东西:
- Processor Java doc
- Java annotation processing tool
- Code generation using AnnotationProcessor
- Annotation Processor, generating a compiler error
- Source code analysis using Java 6 API
- Playing with Java annotation processing