当前位置: 首页 > 面试题库 >

如何在Java中使用@inherited注释?

佟和平
2023-03-14
问题内容

我没有@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 {

}

如果像这样注释了三个类:

@UninheritedAnnotationType
class 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继承注释InheritedAnnotationTypeB

我不知道与此有什么关系。



 类似资料:
  • 问题内容: 我没有用Java 获得注释。如果它自动为您继承方法,那么如果我需要以自己的方式实现该方法,那又如何呢? 怎么知道我的实现方式? 另外,据说如果我不想使用它,而是以一种老式的Java方式执行它,则必须实现类的,和方法以及类的注释类型方法。 这是为什么? 即使我不知道注释和以前运行良好的程序,我也从未实现过。 请有人从头开始向我解释一下。 问题答案: 只是没有误会:您确实要询问java.l

  • 本文向大家介绍Java注解之Retention、Documented、Inherited介绍,包括了Java注解之Retention、Documented、Inherited介绍的使用技巧和注意事项,需要的朋友参考一下 Retention注解 Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值: 1.RetentionPolicy.SOURCE —— 这种类型的Ann

  • 问题内容: 我们可以使用注释的主要领域是什么?该功能是否可以替代基于XML的配置? 问题答案: 注释是元元对象,可用于描述其他元对象。元对象是类,字段和方法。向一个对象询问其元对象(例如)称为自省。内省可以走得更远,我们可以问一个元对象其注释是什么(例如)。内省和注释属于所谓的反射和元编程。 注释需要以一种或另一种方式解释才有用。注释可以在开发时由IDE或编译器解释,也可以在运行时由框架解释。 注

  • 关于使用强化代码注释的名称和语法,我有一个问题。 简短、简短、非常简短的版本是:我正在寻找一个指南/手册,它将列出可用的代码内注释,并为它们的预期用途提供一个示例。专门用于从Fortify扫描结果中省略一组“SQL注入”和“SQL注入:持久性”问题。 TL;博士;细节: 强化版:19.1.0 平台:Java 8;Web App(Weblogic 12.2.1.4.0(12c));Redhat Un

  • 问题是我写了简单的注释处理器,它根本不处理类型注释。simple annotations processor的源代码如下所示: 有什么想法如何使用或如何通过SimpleAnnotationsProcessor访问类型注释吗?使用可插入的注释处理API对我来说是不必要的,我认为它会比Java反射有更好的性能。无论如何,我也不知道如何通过Java反射访问类型注释。