【发布时间】:2015-06-28 08:22:30
【问题描述】:
使用../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 编译器在编译时检测到上述错误?
【问题讨论】:
-
我不明白这个问题。
@Override注释什么都不做。它只是向编译器表明您打算使用该方法覆盖某些内容。如果没有,编译器就会出错。你似乎已经涵盖了 - 你实际上在问什么? -
这是一个完全不同的问题。不是吗?
-
@overexchange 如果这就是你要找的,那你应该问。就目前而言,问题是 interface java.lang.Override 语法如何帮助 java 编译器在编译时检测到上述错误? 而不是 我如何编写自己的自定义注释,如 @Override . 请编辑您的问题以使其清楚。话虽如此,有很多文章已经解释了如何做到这一点。 看我的回答!!
-
你需要写一个注解处理器,并在编译时让javac运行它。
-
java.lang 包中的注解由
javac直接处理,不使用注解处理器。
标签: java annotations java-8