当前位置: 首页 > 知识库问答 >
问题:

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

沈宏朗
2023-03-14

我没有得到Java中继承的@注释。如果它自动为您继承这些方法,那么如果我需要以自己的方式实现该方法,那么该怎么办?

它将如何知道我的实施方式?

另外,据说如果我不想使用它,而是用老式的Java方式,我必须实现对象类的equals()toString()hashCode()方法,以及Java的注释类型方法。lang.annotation。注释class。

那是为什么呢?

即使我不知道继承的@注释和用于正常工作的程序,我也从未实现过这些。

请谁从头给我解释一下。


共有1个答案

令狐钧
2023-03-14

只是没有误解:您确实询问了java。lang.annotation。继承。这是注释的注释。这意味着被注释类的子类被认为具有与其超类相同的注释。

考虑以下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

如您所见,uniheritedannotationtype不是继承的,而是CB继承注释InheritedAnnotationType

我不知道这和什么方法有关。

 类似资料:
  • 问题内容: 我没有用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反射访问类型注释。