• 【java开发系列】—— 自定义注解


      之前在开发中,就总纳闷,为什么继承接口时,会出现@Override注解,有时候还会提示写注解@SuppressWarnings?

      原来这是java特有的特性,注解!

      那么什么是注解呢?

      注解就是某种注解类型的一个实例,我们可以用它在某个类上进行标注,这样编译器在编译我们的文件时,会根据我们自己设定的方法来编译类。

      注解都是什么呢?看下面这张图就明白了!

      上面的图可以看出,注解大体上分为三种:标记注解,一般注解,元注解

      

      @Override用于标识,该方法是继承自超类的。这样,当超类的方法修改后,实现类就可以直接看到了。

      而@Deprecated注解,则是标识当前方法或者类已经不推荐使用,如果用户还是要使用,会生成编译的警告。

      上面的测试,也仅仅是针对IDE,如果是利用javac,应该会有提示的。

      其他的不多说了,标准元注解 都是干嘛的呢?

      @Documented 标记生成javadoc

      @Inherited 标记继承关系

      @Retention 注解的生存期

      @Target 标注的目标

      

    下面我们自己做一个注解!

      首先声明一个接口,并未它添加注解内容!

    复制代码
     1 package testAnnotation;
     2 
     3 import java.lang.annotation.Documented;
     4 import java.lang.annotation.Retention;
     5 import java.lang.annotation.RetentionPolicy;
     6 
     7 @Documented
     8 @Retention(RetentionPolicy.RUNTIME)
     9 public @interface Person{
    10     String name();
    11     int age();
    12 }
    复制代码

      一般来说,注解都是搭配反射的解析器共同工作的。然后利用反射机制查看类的注解内容

    复制代码
     1 package testAnnotation;
     2 
     3 @Person(name="xingoo",age=25)
     4 public class test3 {
     5     public static void print(Class c){
     6         System.out.println(c.getName());
     7         
     8         //java.lang.Class的getAnnotation方法,如果有注解,则返回注解。否则返回null
     9         Person person = (Person)c.getAnnotation(Person.class);
    10         
    11         if(person != null){
    12             System.out.println("name:"+person.name()+" age:"+person.age());
    13         }else{
    14             System.out.println("person unknown!");
    15         }
    16     }
    17     public static void main(String[] args){
    18         test3.print(test3.class);
    19     }
    20 }
    复制代码

      运行结果,读取到了注解的内容

    testAnnotation.test3
    name:xingoo age:25
    作者:xingoo
    本文版权归作者和博客园共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接!
  • 相关阅读:
    hibernate根据hbm自动生成数据库
    java中最常用jar包的用途说明,适合初学者
    struts json配置中遇到的问题记录
    使用NHibernate, Oracle Clob/NClob无法插入
    几种常用的JS类定义方法
    linux系统安装nginx
    Hibernate动态条件查询(Criteria Query)
    ashx中使用session存储数据时报异常
    Nhibernate查询语句
    Hibernate3动态条件查询
  • 原文地址:https://www.cnblogs.com/hellowzd/p/9699934.html
Copyright © 2020-2023  润新知