黑马程序员技术交流社区
标题:
关于注解
[打印本页]
作者:
杨鹏鹏
时间:
2012-8-24 19:08
标题:
关于注解
有一个父类,里面有个方法被加上注解;有一子类继承这父类,同时重写父类的方法。
为什么 方法的注解并没有被继承?
作者:
周兴华
时间:
2012-8-24 19:12
在默认的情况下,父类上的注解并不会被子类继承。如果要让这个注解可以被子类上继承,就必须给这个注解类型定义上添加
Inherited注解
。
作者:
吴通
时间:
2012-8-24 20:40
包 java.lang.annotation。所有注解继承自接口java.lang.annotation.Annotation,并且是自动继承,不需要定义时指定。
该包同时定义了 四个元注解,Documented,Inherited,Target(作用范围,方法,属性,构造方法等),Retention(生命范围,源代码,class,runtime)
Inherited:
在您定义Annotation型态后并使用于程序代码上时,预设上父类别中的Annotation并不会被继承至子类别中,您可以在定义 Annotation时
加上java.lang.annotation.Inherited的Annotation,这让您定义的Annotation型别被继承下来。注意注解继承只针对class 级别注解有效
例如:
package onlyfun.caterpillar;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Inherited;
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Debug {
String value();
String name();
}
在下面这个程序中使用它:
package onlyfun.caterpillar;
@Debug( value = "unit", name = "debug1" ) //该注解可以被子类读取到
public class SomeObject {
@Debug( value = "unit", name = "debug1" ) //子类如果重写该方法,将不继承该注解
public void doSomething() { // .... }
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2