精华内容
下载资源
问答
  • Java的元注解
    2021-03-07 02:59:12

    注解是一系列元数据,它利用元数据来解释、说明程序代码(即被注解的对象)。注解的作用包括:

    1、提供信息给编译器,编译器可以利用注解来探测错误和警告信息。

    2、软件工具可以利用注解信息来生成代码、HTML文档或者做其他相应处理。

    3、运行时的处理,某些注解可以在程序运行时接受代码的提取。

    注解通过关键字@interface进行定义,如:

    public @interface TestAnnotation {}

    元注解就是加到注解上的注解,它的目的是解释、说明其他普通注解。元注解有@Retention、@Documented、@Target、@Inherited、@Repeatable共5种。

    元注解@Retention应用到一个注解时,说明该注解的存活时间。它的取值包括RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。RetentionPolicy.SOURCE表明注解只在源码阶段保留,在编译器进行编译时被丢弃;RetentionPolicy.CLASS表明注解被保留到编译进行的时候,而不会被加载到JVM中;RetentionPolicy.RUNTIME表明注解可以保留到程序运行的时候,它会被加载进入JVM中,在程序运行时可以获取到它们。

    元注解@Documented表示注解内容会被Javadoc工具提取成文档,文档内容会因为注解内容的不同而不同。

    元注解@Target表示注解用于什么地方,如类型、方法和域等。元注解@Target的取值包括ElementType.FIELD、ElementType.METHOD、ElementType.PARAMETER、ElementType.CONSTRUCTOR、ElementType.LOCAL_VARIABLE、ElementType.TYPE、ElementType.ANNOTATION_TYPE、ElementType.PACKAGE。其中,ElementType.FIELD表示对字段、枚举常量的注解,ElementType.METHOD表示对方法的注解,ElementType.PARAMETER表示对方法参数的注解,ElementType.CONSTRUCTOR表示对构造函数的注解,ElementType.LOCAL_VARIABLE表示对局部变量的注解,ElementType.ANNOTATION_TYPE表示对注解类型的注解,ElementType.PACKAGE表示对包的注解,ElementType.TYPE表示对接口、类、枚举、注解等任意类型的注解。

    被元注解@Inherited注解过的注解作用于父类后,子类会自动继承父类的注解。

    元注解@Repeatable是在Java1.8中引入的注解,被注解后的普通注解可以被重复多次作用于一个类并传入不同的参数,代码示例如下:

    @interface Persons {

    Person[]value();

    }

    @Repeatable(Persons.class)

    @interface Person {

    String role default  "";

    }

    @Person(role="artist")

    @Person(role="coder")

    @Person(role="PM")

    public class SuperMan {

    }

    更多相关内容
  • java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...
  • 主要介绍了Spring的组合注解和元注解原理与用法,结合实例形式详细分析了spring组合注解和元注解相关功能、原理、配置及使用方法,需要的朋友可以参考下
  • JAVA核心知识点--元注解详解

    万次阅读 多人点赞 2018-03-25 08:25:34
    meta-annotation(元注解) @Target注解 @Retention注解 @Documented注解 @Inherited注解 注解应用举例 Annotation(注解) 从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。 ...

    目录

    Annotation(注解)

    meta-annotation(元注解)

    @Target注解

    @Retention注解

    @Documented注解

    @Inherited注解

    注解应用举例


    Annotation(注解)

    从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。 

    注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。 

    注解可以标记在包、类、属性、方法,方法参数以及局部变量上,且同一个地方可以同时标记多个注解。 

    // 抑制编译期的未指定泛型、未使用和过时警告
    @SuppressWarnings({ "rawtypes", "unused", "deprecation" })
    // 重写
    @Override

    meta-annotation(元注解)

    除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:

    •   @Target

    •   @Retention

    •   @Documented

    •   @Inherited

    我们可以使用这4个元注解来对我们自定义的注解类型进行注解,接下来,我们挨个对这4个元注解的作用进行介绍。  

    @Target注解

     Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方) 。

    Target注解用来说明那些被它所注解的注解类可修饰的对象范围:注解可以用于修饰 packages、types(类、接口、枚举、注解类)、类成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数),在定义注解类时使用了@Target 能够更加清晰的知道它能够被用来修饰哪些对象,它的取值范围定义在ElementType 枚举中。  

    public enum ElementType {
    
        TYPE, // 类、接口、枚举类
    
        FIELD, // 成员变量(包括:枚举常量)
    
        METHOD, // 成员方法
    
        PARAMETER, // 方法参数
    
        CONSTRUCTOR, // 构造方法
    
        LOCAL_VARIABLE, // 局部变量
    
        ANNOTATION_TYPE, // 注解类
    
        PACKAGE, // 可用于修饰:包
    
        TYPE_PARAMETER, // 类型参数,JDK 1.8 新增
    
        TYPE_USE // 使用类型的任何地方,JDK 1.8 新增
    
    }

    @Retention注解

    Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时) 。

    Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中。

    public enum RetentionPolicy {
     
        SOURCE,    // 源文件保留
        CLASS,       // 编译期保留,默认值
        RUNTIME   // 运行期保留,可通过反射去获取注解信息
    }

    为了验证应用了这三种策略的注解类有何区别,分别使用三种策略各定义一个注解类做测试。  

    @Retention(RetentionPolicy.SOURCE)
    public @interface SourcePolicy {
    
    }
    
    @Retention(RetentionPolicy.CLASS)
    public @interface ClassPolicy {
    
    }
    
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RuntimePolicy {
    
    }
    

    用定义好的三个注解类分别去注解一个方法。  

    public class RetentionTest {
    
    	@SourcePolicy
    	public void sourcePolicy() {
    	}
    
    	@ClassPolicy
    	public void classPolicy() {
    	}
    
    	@RuntimePolicy
    	public void runtimePolicy() {
    	}
    }
    

    如图所示,通过执行 javap -verbose RetentionTest命令获取到的RetentionTest 的 class 字节码内容如下。 

    {
      public retention.RetentionTest();
        flags: ACC_PUBLIC
        Code:
          stack=1, locals=1, args_size=1
             0: aload_0
             1: invokespecial #1                  // Method java/lang/Object."<init>":()V
             4: return
          LineNumberTable:
            line 3: 0
    
      public void sourcePolicy();
        flags: ACC_PUBLIC
        Code:
          stack=0, locals=1, args_size=1
             0: return
          LineNumberTable:
            line 7: 0
    
      public void classPolicy();
        flags: ACC_PUBLIC
        Code:
          stack=0, locals=1, args_size=1
             0: return
          LineNumberTable:
            line 11: 0
        RuntimeInvisibleAnnotations:
          0: #11()
    
      public void runtimePolicy();
        flags: ACC_PUBLIC
        Code:
          stack=0, locals=1, args_size=1
             0: return
          LineNumberTable:
            line 15: 0
        RuntimeVisibleAnnotations:
          0: #14()
    }

    从 RetentionTest 的字节码内容我们可以得出以下两点结论:
               1. 编译器并没有记录下 sourcePolicy() 方法的注解信息; 
               2. 编译器分别使用了 RuntimeInvisibleAnnotations 和 RuntimeVisibleAnnotations 属性去记录了classPolicy()方法 和 runtimePolicy()方法 的注解信息;  

    @Documented注解

    Documented注解的作用是:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。

    为了验证Documented注解的作用到底是什么,我们创建一个带有 @Documented 的自定义注解类。 

    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Target;
    
    @Documented
    @Target({ElementType.TYPE,ElementType.METHOD})
    public @interface MyDocumentedtAnnotation {
    
    	public String value() default "这是@Documented注解为文档添加的注释";
    }
    

    再创建一个 MyDocumentedTest 类。  

    @MyDocumentedtAnnotation
    public class MyDocumentedTest {
    
    	@Override
    	@MyDocumentedtAnnotation
    	public String toString() {
    		return this.toString();
    	}
    }
    

    接下来,使用以下命令为 MyDocumentedTest 类生成帮助文档。  

    命令执行完成之后,会在当前目录下生成一个 doc 文件夹,其内包含以下文件。 

    查看 index.html 帮助文档,可以发现在类和方法上都保留了 MyDocumentedtAnnotation 注解信息。 

    修改 MyDocumentedtAnnotation 注解类,去掉上面的 @Documented 注解。 

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Target;
    
    @Target({ElementType.TYPE,ElementType.METHOD})
    public @interface MyDocumentedtAnnotation {
    
    	public String value() default "这是@Documented注解为文档添加的注释";
    }
    

    重新生成帮助文档,此时类和方法上的 MyDocumentedtAnnotation 注解信息都不见了。 

    @Inherited注解

    Inherited注解的作用是:使被它修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解)。

    接下来我们使用代码来进行测试,首先创建一个被@Inherited修饰的注解类MyInheritedAnnotation。 

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Inherited;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Inherited
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MyInheritedAnnotation {
    
    	public String name() default "pengjunlee";
    }
    

    创建一个带有 MyInheritedAnnotation 注解的父类和一个无任何注解的子类。  

    @MyInheritedAnnotation(name="parent")
    public class Parent {
    
    }
    
    public class Child extends Parent{
    
    	public static void main(String[] args) {
    		Class<Child> child=Child.class;
    		MyInheritedAnnotation annotation = child.getAnnotation(MyInheritedAnnotation.class);
    		System.out.println(annotation.name());
    	}
    }
    

    运行程序,打印结果如下:  

    parent

    注解应用举例

    首先自定义一个注解类。 

    package com.pengjunlee;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Inherited;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    public @interface MyAnnotation {
    
    	public String name() default "pengjunlee";
    }
    

    在 AnnotationTest 中使用反射获取注解信息。  

    package com.pengjunlee;
    
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Method;
    
    @MyAnnotation(name = "name of type")
    public class AnnotationTest {
    
    	@MyAnnotation(name = "name of method")
    	public String hello() {
    		return "hello";
    	}
    
    	public static void main(String[] args) throws NoSuchMethodException, SecurityException {
    
    		Class<AnnotationTest> annotationTest = AnnotationTest.class;
    		// 获取类上的所有注解
    		Annotation[] annotations = annotationTest.getAnnotations();
    		for (Annotation annotation : annotations) {
    			// 获取注解的全类名
    			System.out.println(annotation.annotationType().getName());
    		}
    
    		// 获取 hello() 方法
    		Method method = annotationTest.getMethod("hello", new Class[] {});
    
    		// hello() 方法上是否有 MyAnnotation 注解
    		if (method.isAnnotationPresent(MyAnnotation.class)) {
    
    			// 获得注解
    			MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
    
    			// 获取注解的内容
    			System.out.println(annotation.name());
    
    		}
    	}
    }
    

    运行程序,打印结果如下:  

    com.pengjunlee.MyAnnotation
    name of method

      

    展开全文
  • 什么是元注解

    千次阅读 2019-03-26 11:16:23
    什么是元注解 元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。它的作用和目的就是给其他普通的标签进行解释说明的。 元标签有五个:@Retention、@Documented、@...

    什么是元注解

    元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。它的作用和目的就是给其他普通的标签进行解释说明的。
    元标签有五个:@Retention@Documented@Target@Inherited@Repeatable

    1. @Retention 存活时间

    Retention 的英文意为保留期的意思。当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间

    它的取值如下:

    • RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
    • RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
    • RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

    我们可以这样的方式来加深理解,@Retention 去给一张标签解释的时候,它指定了这张标签张贴的时间。@Retention 相当于给一张标签上面盖了一张时间戳,时间戳指明了标签张贴的时间周期。

    @Retention(RetentionPolicy.RUNTIME)
    public @interface TestAnnotation {
    }
    

    上面的代码中,我们指定 TestAnnotation 可以在程序运行周期被获取到,因此它的生命周期非常的长。


    2. @Documented 保存到javadoc

    顾名思义,这个元注解肯定是和文档有关。它的作用是能够将注解中的元素包含到 Javadoc 中去。


    3. @Target 限定使用场景

    Target 是目标的意思,@Target 指定了注解运用的地方。当一个注解被 @Target 注解时,这个注解就被限定了运用的场景
    类比到标签,原本标签是你想张贴到哪个地方就到哪个地方,但是因为 @Target 的存在,它张贴的地方就非常具体了,比如只能张贴到方法上、类上、方法参数上等等。

    @Target 有下面的取值:

    • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
    • ElementType.CONSTRUCTOR 可以给构造方法进行注解
    • ElementType.FIELD 可以给属性进行注解
    • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
    • ElementType.METHOD 可以给方法进行注解
    • ElementType.PACKAGE 可以给一个包进行注解
    • ElementType.PARAMETER 可以给一个方法内的参数进行注解
    • ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

    4. @Inherited 注解继承

    Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的 注解进行注解的话(真绕弯,就是说:@Inherited注解了B注解,B再注解别人),那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。
    说的比较抽象。代码来解释。

    @Inherited
    @Retention(RetentionPolicy.RUNTIME)
    @interface Test {}
    
    @Test
    public class A {}
    
    public class B extends A {}
    

    注解 Test 被 @Inherited 修饰,之后类 A 被 Test 注解,类 B 继承 A,类 B 也拥有 Test 这个注解。

    可以这样理解:

    1. 老子非常有钱,所以人们给他贴了一张标签叫做富豪。
    2. 老子的儿子长大后,只要没有和老子断绝父子关系,虽然别人没有给他贴标签,但是他自然也是富豪。
    3. 老子的孙子长大了,自然也是富豪。

    这就是人们口中戏称的富一代,富二代,富三代。虽然叫法不同,好像好多个标签,但其实事情的本质也就是他们有一张共同的标签,也就是老子身上的那张富豪的标签。


    5. @Repeatable 重复

    Repeatable 是可重复的意思。@Repeatable 是 Java 1.8 才加进来的,所以算是一个新的特性。
    什么样的注解会多次应用呢?通常是注解的值可以同时取多个。

    举个例子,一个人他既是程序员又是产品经理,同时他还是个画家。

    @interface Persons {
    	Person[]  value();
    }
    
    @Repeatable(Persons.class)
    @interface Person{
    	String role default "";
    	}
    
    @Person(role="artist")
    @Person(role="coder")
    @Person(role="PM")
    public class SuperMan{}
    

    注意上面的代码,@Repeatable 注解了 Person。而 @Repeatable(Persons.class) 相当于一个容器注解(就是用来存放其它注解的地方。它本身也是一个注解。)

    我们再看看代码中最上边的相关容器注解。

    @interface Persons {
    	Person[]  value();
    }
    

    按照规定,它里面必须要有一个 value 的属性,属性类型是一个被 @Repeatable 注解过的注解数组,注意它是数组。
    如果不好理解的话,可以这样理解:Persons 是一张总的标签,上面贴满了 Person 这种同类型但内容不一样的标签。把 Persons 给一个 SuperMan 贴上,相当于同时给他贴了程序员、产品经理、画家的标签。

    展开全文
  • 【Java 注解】自定义注解 ( 元注解 )

    热门讨论 2021-05-17 13:10:05
    一、元注解、 二、常用的元注解类型、 三、@Target 元注解、 四、@Retention 元注解、 五、@Documented 元注解、 六、@Documented 元注解





    一、元注解



    元注解 是 描述 注解注解 ;


    以 Override 注解为例 , 分析下该注解的 元注解 含义 :

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Override {
    }
    

    @Target 注解用于说明该注解作用位置 , ElementType.METHOD 表示该注解用于标注 方法 ; 注解的作用位置 : 包 , 类 , 成员变量 , 方法 , 方法参数 , 局部变量 , 6 6 6 个作用位置 ;

    @Retention 注解用于说明该注解需要保留到什么阶段 , RetentionPolicy.SOURCE 表示保留到源码中 , SOURCE 阶段 ( 源代码阶段 ) ; Java 代码的三个阶段分别是 : 源代码阶段 , 类对象阶段 , 运行时阶段 ;

    元注解的个数是有限的 , JDK 已经定义好 ;





    二、常用的元注解类型



    @Target : 描述 注解 的作用位置 , 包 , 类 , 成员变量 , 方法 , 方法参数 , 局部变量 , 6 6 6 个作用位置 ;

    @Retention : 描述 注解 被保留的阶段 , 源代码阶段 , 类对象阶段 , 运行时阶段 ;

    @Documented : 描述 注解 是否需要被抽取到文档中 , 在使用 javadoc 命令生成文档时 , 该 注解 是否生成到文档中 ;

    @Inherited : 描述 注解 是否被子类继承 , 如果添加了该注解 , 则子类会自动继承父类的注解 ;





    三、@Target 元注解



    查看 Target 注解的源码 , 该注解只有 1 1 1 个注解属性 , 且属性值是 value , 因此在给 注解属性 赋值时 , 可以省略 注解属性名称 ;

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Target {
        ElementType[] value();
    }
    

    value 注解属性 的类型是 ElementType[] 数组类型 , 代表 注解 作用的位置 ; 可以设置的位置参考 ElementType 枚举类 ;

    • ElementType.TYPE : 注解作用于类上 ;
    • ElementType.FIELD: 注解作用于字段上 ;
    • ElementType.METHOD : 注解作用于方法上 ;
    public enum ElementType {
        /** 类 , 接口 (包括注解类型) , 枚举类型 声明 */
        TYPE,
    
        /** 字段 (包括枚举常量) */
        FIELD,
    
        /** 方法声明 */
        METHOD,
    
        /** 普通参数声明 */
        PARAMETER,
    
        /** 构造函数声明 */
        CONSTRUCTOR,
    
        /** 局部变量声明 */
        LOCAL_VARIABLE,
    
        /** 注解类型声明 */
        ANNOTATION_TYPE,
    
        /** 包声明 */
        PACKAGE,
    
        /**
         * 类型参数声明
         *
         * @since 1.8
         */
        TYPE_PARAMETER,
    
        /**
         * 使用一个类型
         *
         * @since 1.8
         */
        TYPE_USE
    }
    

    @Target 使用示例 : 使用 @Target(ElementType.TYPE) 设置注解作用位置必须是 类 / 接口 / 枚举 , 将 @Annotation 标注在其它位置会报错 ;

    @Target(ElementType.TYPE)
    public @interface Annotation {
    }
    

    作用域构造函数上 , 报如下错误 ;

    在这里插入图片描述

    @Target(ElementType.TYPE) 元注解修饰的 Annotation 注解 , 只能在 类 上进行标注 ;

    @Annotation(
            stringValue = "tom",
            enumValue = Number.ONE,
            annotationValue = @Annotation2,
            stringArrayValue = {"tom", "jerry"})
    public class Student {
    }
    

    Target 注解中 , ElementType[] value() 注解属性的类型是数组类型 , 说明可以设置多个 注解 标注 位置 ;

    如 : 使用如下

    @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
    

    元注解修饰 Annotation 注解 , 则可以同时在 类 , 字段 和 方法上使用该 Annotation 注解 ;





    四、@Retention 元注解



    @Retention 注解用于说明该注解需要保留到什么阶段 ;

    Java 代码的三个阶段分别是 : 源代码阶段 , 类对象阶段 , 运行时阶段 ;

    查看 Retention 源码 ,

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Retention {
        RetentionPolicy value();
    }
    

    Retention 注解的 注解属性 RetentionPolicy value() , 其类型是 RetentionPolicy 枚举类型 , 三个枚举值 , 分别对应 Java 代码三大阶段 源代码阶段 , 类对象阶段 , 运行时阶段 ;

    public enum RetentionPolicy {
        /** 
         * 源代码阶段
         * 编译器丢弃该注解.
         */
        SOURCE,
    
        /** 
         * 类对象阶段
         * 注解会被保存到字节码文件中, 不会被 JVM 读取到.
         */
        CLASS,
    
        /** 
         * 运行时阶段
         * 注解会被保存到字节码文件中, 并会被 JVM 读取到.
         *
         * @see java.lang.reflect.AnnotatedElement
         */
        RUNTIME
    }
    

    一般情况下 , 开发则自定义注解 , 都是在运行时进行一些代码分析 , 设置 RetentionPolicy.RUNTIME 注解属性 ;

    @Retention(RetentionPolicy.RUNTIME)
    




    五、@Documented 元注解



    如果添加了该注解 , 表示当前注解会被抽取到 Java API 文档中 ;

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Documented {
    }
    

    使用 javadoc Student.java 命令 , 生成 Java 文档 ; 如果使用 @Documented 注解修饰 Annotation 注解 , 则导出的文档如下 , 在类和方法的上面会显示相应注解 ;

    在这里插入图片描述

    如果不使用 @Documented 注解 , 则生成的文档中没有 Annotation 注解 ;





    六、@Documented 元注解



    @Inherited : 描述 注解 是否被子类继承 , 如果添加了该注解 , 则子类会自动继承父类的注解 ;

    使用 @Inherited 元注解 标注 Annotation 注解 ;

    使用 Annotation 注解 标注父类 Person ;

    子类 Student 继承 Person 类 , 子类中不添加注解 , 那么父类 Person 中的注解自动添加给子类 Student ;

    展开全文
  • spring 元注解

    千次阅读 2018-07-20 16:07:57
    1、元注解(meta-annotation):  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:  1.@Target,  2.@...
  • Java元注解

    2022-03-30 15:39:15
    Java 注解(Annotation),也叫数据
  • Java的四种元注解 四种元注解 1、被@Target修饰的注解,表明了注解的使用范围 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Target { ...
  • 主要介绍了JSP 中Spring组合注解与元注解实例详解的相关资料,需要的朋友可以参考下
  • 主要介绍了通过实例解析Spring组合注解与元注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 元注解

    2020-12-31 22:25:39
    元注解的作用就是负责注解其他注解,Java定义了四个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明。 这些类型和它们所支持的类在Java.lang.annotation包中可以找到.(@Target,@Retention,@...
  • 元注解(注解的注解)

    2022-01-01 12:37:15
    java元注解 定义注解时,会需要一些元注解 @Retention 表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中,包括: RetentionPolicy.SOURCE:指定注解只保留在源文件当中,注解将被编译器...
  • Annotation(注解)也被称为数据(Metadata) Annotation(注解)也被称为数据(Metadata)是JDK1.5及...和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。 另外,你可以在编...
  • Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解
  • 1.注解注释对比 注释: 给人看的提示信息,人看了提示信息了解程序的内容 java中注释的格式:// /**/ /** */ 注解: sun在jdk5.0开始提供的新特性 给程序看的提示信息,程序看后可以根据有无注解注解上...
  • 元注解的种类 (使用不多,了解, 不用深入研究) Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME Target // 指定注解可以在哪些地方使用 Documented //指定该注解是否会在 javadoc 体现 Inherited //...
  • 文章目录一、什么是注解二、内置注解三、元注解四、自定义注解 一、什么是注解 注解,Annotation是JDK5.0引入的新技术。 Annotation不是程序本身,可以对程序作出解释,可以被其他程序(如编译器)读取; 其写法是...
  • Java四种元注解

    2022-01-21 10:03:14
    Java四种元注解
  • Retention元注解

    2021-04-09 12:22:18
    Retention:Java的元注解之一,用来解释注解的注解。这个注解用来修饰其他注解保留的生命周期(范围), 如果注释类型声明中没有保留注释,则保留策略默认为RetentionPolicy.CLASS 。 RetentionPolicy.SOURCE:仅...
  • 注解(Annotation),也叫数据,标签,注释注解注释的时候,容易和java的代码注释混淆,一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段...
  •   注解(Annotation)不是程序本身,但是可以对程序作出解释,同时注解还可以让其他程序读取。...  定义在 java.lang.Override 中 , 此注释只适用于修辞方法 , 表示一个方法声明打算 重写超类中的另...
  • 1 元注解1.1 什么是元注解所谓元注解其实就是可以注解到别的注解上的注解,被注解的注解称之为组合注解,组合注解具备其上元注解的功能.1.2 四种元注解在JDK中提供了4个标准的用来对注解类型进行注解的注解类,我们称...
  • 但是对于解释注解的元注解不清.下面我给大家详细介绍一下元注解 @Target 表示该注解用于什么地方 @Retention 表示在什么级别保存该注解信息 当在一个注解类前定义了一个@Retetion(RetentionPolicy.SOURCE...
  • Java四大元注解

    万次阅读 2020-05-26 11:13:37
    目录Annotation(注解)meta-annotation(元注解)@Target注解@Retention注解@Documented注解@Inherited注解注解应用举例 Annotation(注解) 从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation...
  • SpringBoot 元注解

    2020-07-13 23:05:49
    了解元注解 元注解就是定义注解的注解,是 Java 提供的用于定义注解的基本注解 元注解 注解 说明 @Retention 是注解类,实现声明类 Class,声明类别 Category,声明扩展 Extension @Taget 放在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 219,575
精华内容 87,830
关键字:

元注解