zoukankan      html  css  js  c++  java
  • java自定义注解

    • Java注解

      Java注解(Annotation)是JDK5.0引入的一种注释直接,可以作用于java语言中的类,方法,变量,参数和包中。java注解可以通过反射获取注解内容, 在编译器生成类文件时,注解可以被嵌入到字节码中。Java 虚拟机可以保留注解内容,在运行时可以获取到注解内容 。 java也支持自定义注解。

    • 内置注解

      java有自己的一套注解,分别如下:

      • 源注解

        @Documented:标记这些注解是否在用户文档中
        @Inherited:标记注解继承哪个注解
        @Retention:标识这个注解的作用,是作用于代码中,编译期,还是运行期
        @Target:用来标识这个注解是作用于方法上还是类上还是其他字段上

      • java提供的注解

        @Override:检查该方法是否是重载方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
        @Deprecated:标记过时方法。如果使用该方法,会报编译警告。
        @SuppressWarnings:指示编译器去忽略注解中声明的警告。

    • 自定义注解

      自定义一个java注解,用来注解到方法上面

      @Retention(RetentionPolicy.RUNTIME)
      public @interface MyAnnotation {
      
          String[] value() default "张三";
      
      }
      
      public class Person {
      
      
          @MyAnnotation(value = "lisi")
          public void boy(String name){
              System.out.println("boy name is "+ name);
          }
          
          @MyAnnotation(value = "zhangsan")
          public void girl(String name){
          
              System.out.println("girl name is " +name);
          }
      
      }
      

      通过反射来获取注解

      public class PersonAnnonationTest {
      
          public static void main(String[] args) throws Exception{
              Class<?> personClass = ClassLoader.getSystemClassLoader().loadClass("com.rookie.bigdata.annotation.Person");
          
              Person personInstance = (Person)personClass.newInstance();
              Method method = personClass.getMethod("boy", new Class[]{String.class});
          
              method.invoke(personInstance,new Object[]{"张三"});
          
              //获取注解上面的值
              if(method.isAnnotationPresent(MyAnnotation.class)){
                  //获取上面的注解
                  MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
          
                  //获取注解的值
                  String[] value = annotation.value();
                  for (String s : value) {
                      System.out.println(s);
                  }
              }
      
      
      
      
          }
      
      }
      
  • 相关阅读:
    第1周学习进度
    四则运算题1
    性能监控系统 | 从0到1 搭建Web性能监控系统
    数据库 | Oracle数据库查表空间使用情况
    性能测试 | 系统运行缓慢,CPU 100%,Full GC次数过多问题排查
    Markdown | 语法
    性能测试 | 理解单线程的Redis为何那么快?
    性能测试 | 理解分布式、高并发、多线程
    性能测试 | 常见的性能测试指标
    mysql 中varchar(50)最多能存多少个汉字
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/12212847.html
Copyright © 2011-2022 走看看