如何在Java中使用@inherited注释?
我没有@Inherited
用Java 获得注释。如果它自动为您继承方法,那么如果我需要以自己的方式实现该方法,那又如何呢?
怎么知道我的实现方式?
另外,据说如果我不想使用它,而是以一种老式的Java方式执行它equals()
,则必须实现类的toString()
,和hashCode()
方法以及Object
类的注释类型方法java.lang.annotation.Annotation
。
这是为什么?
即使我不知道@Inherited
注释和以前运行良好的程序,我也从未实现过。
请有人从头开始向我解释一下。
回答:
只是没有误会:您确实要询问java.lang.annotation.Inherited。这是注解的注解,这意味着被注解的类的子类被认为具有与其父类相同的注解。
回答:
考虑以下2个注释:
@Inherited@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface InheritedAnnotationType {
}
和
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)
public @interface UninheritedAnnotationType {
}
如果像这样注释了三个类:
@UninheritedAnnotationTypeclass A {
}
@InheritedAnnotationType
class B extends A {
}
class C extends B {
}
运行此代码
System.out.println(new A().getClass().getAnnotation(InheritedAnnotationType.class));System.out.println(new B().getClass().getAnnotation(InheritedAnnotationType.class));
System.out.println(new C().getClass().getAnnotation(InheritedAnnotationType.class));
System.out.println("_________________________________");
System.out.println(new A().getClass().getAnnotation(UninheritedAnnotationType.class));
System.out.println(new B().getClass().getAnnotation(UninheritedAnnotationType.class));
System.out.println(new C().getClass().getAnnotation(UninheritedAnnotationType.class));
将打印与此类似的结果(取决于注释的包):
null@InheritedAnnotationType()
@InheritedAnnotationType()
_________________________________
@UninheritedAnnotationType()
null
null
正如你所看到的UninheritedAnnotationType
是不能继承,但C
继承注释InheritedAnnotationType
从B
。
我不知道与此有什么关系。
以上是 如何在Java中使用@inherited注释? 的全部内容, 来源链接: utcz.com/qa/416043.html