• java高薪之路__008_Annotation


    元注解

    共有4种

    @Retention 表示需要在什么级别保存该注释信息(生命周期)
      |--- RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
      |--- RetentionPolicy.CLASS: 停留在class文件中,但会被VM丢弃(默认)
      |--- RetentionPolicy.RUNTIME: 内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息

    @Target             默认值为任何元素,表示该注解用于什么地方
      |--- ElementType.CONSTRUCTOR:   构造器声明
      |--- ElementType.FIELD:       成员变量、对象、属性(包括enum实例)
      |--- ElementType.LOCAL_VARIABLE: 局部变量声明
      |--- ElementType.METHOD;      方法声明
      |--- ElementType.PACKAGE:     包声明
      |--- ElementType.PARAMETER:    参数声明
      |--- ElementType.TYPE:       类、接口(包括注解类型)或enum声明

    @Documented    将注解包含在JavaDoc中,Documented是一个标记注解,没有成员

    @Inheried    允许子类继承父类中的注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类
     1 package learn.JavaBasics.Class;
     2 
     3 import java.lang.annotation.Documented;
     4 import java.lang.annotation.ElementType;
     5 import java.lang.annotation.Inherited;
     6 import java.lang.annotation.Retention;
     7 import java.lang.annotation.RetentionPolicy;
     8 import java.lang.annotation.Target;
     9 import java.lang.reflect.Method;
    10 
    11 @Retention(RetentionPolicy.RUNTIME)
    12 @Target({ElementType.TYPE,ElementType.METHOD})
    13 @Documented
    14 @Inherited
    15 @interface myAnnotationDemo{
    16     public String value() default "heollo annotation";
    17 }
    18 
    19 @myAnnotationDemo(value="test class success")
    20 public class TestAnnotation {
    21     public static void main(String[] args) throws SecurityException, NoSuchMethodException {
    22         Class<?> clazz = TestAnnotation.class;
    23         
    24         if (clazz.isAnnotationPresent(myAnnotationDemo.class)) {
    25             //获取类的注解
    26             myAnnotationDemo mya = clazz.getAnnotation(myAnnotationDemo.class);
    27             
    28             System.out.println(mya.value());
    29             
    30             //获取方法的注解
    31             Method m = clazz.getMethod("testAnnotation");
    32             myAnnotationDemo ma = m.getAnnotation(myAnnotationDemo.class);
    33             
    34             System.out.println(ma.value());
    35         }
    36     }
    37     
    38     @myAnnotationDemo(value="test method success")
    39     public void testAnnotation(){
    40         
    41     }
    42 }
    View Code
  • 相关阅读:
    Redis学习笔记六:持久化实验(AOF,RDB)
    MySQL从源码编译安装
    Redis学习笔记五:缓存常见问题
    修复MySQL漏洞防火墙策略(CentOS7)
    Linux释放根目录空间(CentOS)
    CentOS7离线安装firewalld及端口配置
    Linux通过软链接方式对磁盘进行变相扩容
    SNMP及SNMP Trap对接指南
    Oracle安装磁盘空间满了怎么办?(Windows Server)
    无法打开OracleEnterpriseManager页面【http://localhost:1158/em】
  • 原文地址:https://www.cnblogs.com/hangtt/p/4855202.html
Copyright © 2020-2023  润新知