有关Annotation的继承说明:
1、JDK文档中的说明是:只有在类上应用的Annotation才能被继承,而实际应用时的结果是:除了类上应用的Annotation能被继承外,没有被重写的方法的Annotation也能被继承。
2、要注意的是:当方法被重写后,Annotation将不会被继承。
3、要使得Annotation 被继承,需要在Annotation中加标识@Inherited,并且如果要被反射应用的话,就需要还有个@Retention(RetentionPolicy.RUNTIME) 标识
4、Annotation的继承不能应用在接口上
代码一、实现类上的继承
java 代码
- package com.test;
-
- import java.lang.annotation.Inherited;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
-
- @Inherited
- @Retention(RetentionPolicy.RUNTIME)
- public @interface InheritedTest {
- String hello();
- }
java 代码
- package com.test;
-
- @InheritedTest(hello = "yahaitt")
- public class InheritedParent {
-
- }
java 代码
- package com.test;
-
- public class InheritedChild extends InheritedParent {
-
- }
java 代码
- package com.test;
-
- public class InheritedClassTest {
-
- public static void main(String[] args) throws Exception
- {
- Class<inheritedchild></inheritedchild> c = InheritedChild.class;
- if(c.isAnnotationPresent(InheritedTest.class))
- {
- InheritedTest it = c.getAnnotation(InheritedTest.class);
- System.out.println(it.hello());
- }
- }
- }
代码二、实现方法上的继承
java 代码
- package com.test;
-
- import java.lang.annotation.Inherited;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
-
- @Inherited
- @Retention(RetentionPolicy.RUNTIME)
- public @interface InheritedTest {
- String hello();
- }
java 代码
- package com.test;
-
-
- public class InheritedParent {
-
- @InheritedTest(hello = "yahaitt")
- public void doSomething()
- {
- System.out.println("parent do something");
- }
-
- }
java 代码
- package com.test;
-
- public class InheritedChild extends InheritedParent {
-
-
- }
java 代码
- package com.test;
-
- import java.lang.reflect.Method;
-
- public class InheritedClassTest {
-
- public static void main(String[] args) throws Exception
- {
- Class<inheritedchild></inheritedchild> c = InheritedChild.class;
- Method method = c.getMethod("doSomething", new Class[]{});
- if(method.isAnnotationPresent(InheritedTest.class))
- {
- InheritedTest it = method.getAnnotation(InheritedTest.class);
- System.out.println(it.hello());
- }
- }
- }
分享到:
相关推荐
**标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...
Annotation并不直接改变程序的运行逻辑,而是通过相关的处理机制间接影响程序行为。 5. **Annotation与Javadoc** Annotation与Javadoc Tag相似,但有所不同。如果一个标记对Java文档有影响或者用于生成Java文档,...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的能力,这些信息可以被编译器或运行时环境用来验证、处理或增强代码的行为。本篇我们将深入探讨“限定使用、文档、继承”这三个关键...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...
### Annotation注解的深入解析与应用 #### 一、Annotation概览 ##### 1.1 何为元数据 元数据,在计算机科学中,是指用于描述数据的数据,它提供了关于数据本身的附加信息,有助于理解、解释和管理数据。在编程...
《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...
Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...
此外,Struts 2还提供了其他注解,例如`@Namespace`用于定义Action的命名空间,`@ParentPackage`用于继承现有的配置包,`@SkipValidation`用于跳过特定Action的方法验证等。 为了运行这个"Hello World"应用,你需要...
- `@Table`: 指定实体对应的数据库表名,以及表的相关属性如schema和catalog。 - `@Id`: 定义实体的主键字段,通常与`@GeneratedValue`结合使用,以指定主键生成策略。 - `@GeneratedValue`: 控制主键值的自动...
4. `@ParentPackage`: 这个Annotation用于指定当前Action继承自哪个默认的Struts包,这样可以复用其中的配置。 5. `@InterceptorRef`: 用于引入拦截器,拦截器是Struts2处理请求的重要部分,它们可以进行日志记录、...
- `@Inheritance`:继承关系映射,可以设置单表继承或多表继承策略。 - `@SequenceGenerator`:定义序列生成器,适用于数据库不支持自增主键的情况。 **Hibernate 4.x及更高版本的变化** 从Hibernate 4.x开始,...
在Android开发中,`Annotation(注解)`是一种强大的工具,可以用来元数据化代码,提供编译时或运行时的附加信息。AndroidAnnotations(简称AA)是一个流行的库,它利用注解简化了Android开发,提高了代码的可读性...
4. `@Inherited`:使子类继承父类的注解。 七、实例分析 下面是一个简单的注解和处理器示例,用于检查类是否有特定注解: ```java @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @...
Annotation 属性值 ...需要注意的是,Annotation 不可以继承其他接口,也不能使用除基本类型、枚举类型、Class 类型的一维数组之外的类型作为 Annotation 的类型。Annotation 也存在包结构,在使用时可以直接导入。
在Hibernate中,注解(Annotation)是一种声明式的方法,用于配置实体类、属性以及它们与数据库表之间的映射关系。本文将深入探讨“最全的Hibernate Annotation API文档”中的关键知识点。 一、实体类(Entity) 在...
标题“Hibernate distribution and annotation”涉及到的是Hibernate ORM框架的一个特定版本及其相关的注解功能。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程模型来操作...