美文网首页
Java注解笔记

Java注解笔记

作者: ZGYSYY | 来源:发表于2018-05-03 22:24 被阅读0次

什么是注解?

  1. 注解不是注释,注释是给程序员看的,而注解是给程序看的。
  2. 注解用来描述程序如何运行及在什么阶段来运行。
  3. 注解在实际开发中,最大的功能就是替换配置文件。
  4. 注解是JDK1.5的新特性。
  5. 可以通过反射来让注解具有功能。
  6. 注解的格式:@XXX 。
  7. 注解的本质就是一个接口,这个接口需要继承Annotation接口。

三个基本的注解:

  1. @Override:检查子类是否重写了父类的方法,如果不加该注解,就不检查。
  2. @Deprecated:说明已经过时。
  3. @SuppressWarnings({"unused"}):抑制程序中的警告,unused是警告的类型,意思是没有使用过的方法或变量不警告,{}是数组,如果将unused替换成all是抑制所有警告。

如何来声明注解?

  1. 声明一个注解:@interface 注解名{}
  2. 声明注解中的成员,成员包括:基本类型、String、枚举、注解、Class、以上类型的一维数组。
  3. 注解的使用,在类、方法、变量上使用@定义的注解名。

式例代码:

package com.zgy.annotation;

public @interface MyAnnotation {

    int a() default 1;
    String b() default "ZGY";
    String[] c() default {};
    Class d() default Object.class;
}

package com.zgy.annotation;

public class Demo {

    @MyAnnotation(a=2,b="YGZ",c= {"AA","BB"},d=String.class)
    public void test01() {
        
    }
}

模拟Junit单元测试

式例代码:

@Retention(RetentionPolicy.RUNTIME):注解的运行策略,RetentionPolicy.RUNTIME表示运行时执行。

package com.zgy.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface MyJunit {

    String name() default "ZGY";
}

package com.zgy.annotation;

public class Demo2 {

    @MyJunit(name="LHM")
    public void test01() {
        System.out.println("运行Test01方法");
    }
    
    @MyJunit
    public void test02() {
        System.out.println("运行Test02方法");
    }
    
    public void test03() {
        System.out.println("运行Test03方法");
    }
}

package com.zgy.annotation;

import java.lang.reflect.Method;

public class Demo3 {

    public static void main(String[] args) throws Exception {
        //通过反射获取Demo2类中的所有方法
        Method[] methods = Demo2.class.getMethods();
        for(Method m : methods) {
            //去掉继承自Object的方法
            if(m.getName().startsWith("test")) {
                //获取方法上的注解
                MyJunit junit = m.getAnnotation(MyJunit.class);
                //获取注解中定义的成员的值
                if(junit != null) {
                    System.out.println("name:"+junit.name());
                    //调用被注解的方法
                    m.invoke(Demo2.class.newInstance());
                }
            
            }
        }
    }
}

元注解

  1. 什么时元注解:只能用在注解上的注解。及修饰注解的注解。

注解的存活范围:Source(源码),Class(字节码),Runtime(运行时)

  1. @Retention:作用是改变自定义注解的存活范围,默认是Class,意思是在编译成class文件后,注解就不存在了。有三个值分别为:
    RetentionPolicy.SOURCE
    RetentionPolicy.CLASS
    RetentionPolicy.RUNTIME
  2. @Target:作用是指定该注解能用到什么地方,有以下几个值:
    ElemenType.TYPE
    ElemenType.METHOD
    ElemenType.FIELD
    ElemenType.ANNOTATION_TYPE
  3. @Documented:跟生成API有关。
  4. Inherited:说明该注解可以被继承下去。

相关文章

  • 相关文章

    我的笔记核心理论基础、Socket通信原理、RPC远过程调用协议、Dubbo博客 java注解-01、java注解...

  • 2021校招 复习总结

    笔记导航: JAVA: 泛型 反射和动态代理 注解 JAVA多线程 ReentrantLock,Volatile,...

  • Java反射机制学习笔记

    上一篇《java注解学习笔记》中最后说到了注解的实现主要依赖java的反射机制,那么这一篇主要介绍一下java的反...

  • 菜鸟学服务端技术----Spirng基础

    注解 Java基础加强总结(一)——注解(Annotation) java中的注解是如何工作的? java 注解 ...

  • 自定义注解

    java annotation基础 java注解分为标准注解和元注解。 标准注解是java为我们提供的预定义的注解...

  • Java注解的使用

    Java注解的使用 参考 廖雪峰java教程 使用注解 什么是注解(Annotation)?注解是放在Java源码...

  • Java原生注解和Spring注解的说明

    注解 java 原生注解 Spring 中的注解 一 Java原生注解 Java注解是在JDK1.5以后引入的新特...

  • Java注解笔记

    什么是注解? 注解不是注释,注释是给程序员看的,而注解是给程序看的。 注解用来描述程序如何运行及在什么阶段来运行。...

  • Java注解笔记

    Java注解详解 Java注解是JDK1.5以后添加的特性,自定义注解需要声明为@interface。 最简单的注...

  • Java注解笔记

    写在前面:这是一篇菜鸟的学习笔记。 Java有@Override,Spring有@Autowired,Spring...

网友评论

      本文标题:Java注解笔记

      本文链接:https://www.haomeiwen.com/subject/mgfrrftx.html