一下是java给出的源代码:
/* * @(#)Override.java 1.6 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */
package java.lang;
import java.lang.annotation.*;
/** * Indicates that a method declaration is intended to override a * method declaration in a superclass. If a method is annotated with * this annotation type but does not override a superclass method, * compilers are required to generate an error message. * * @author Joshua Bloch * @since 1.5 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}
以上实际只有一句是有用的即:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {}
但从此源代码来看,似乎什么都没实现,那么从哪里看出此注解是声明覆盖父类的方法呢?还望各位不吝赐教,谢谢!
应该是由编译器实现的,比如eclipse的编译器
这里定义是个空的annotation类型,那么@Override就起到一个简单的标记作用,不附加其它信息,由@Retention(RetentionPolicy.SOURCE) 可以看出这个注解只保留在源码中,那么在JDK编译时,编译器检测到这个@Override后,会去检查这个Method是否重写了父类的方法,