美文网首页
注解入门

注解入门

作者: senninha | 来源:发表于2017-04-01 15:56 被阅读9次

    注解在《java编程思想里》里的定义是:

    注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们在稍后的某个时刻非常方便地使用这些数据。

    java se 内置了三种注解:

    • @Override
    • @Deprecated
    • @SuppressWarnings

    还有四种元注解,专门用来负责新创建的注解:

    • @Target:表示该注解可以用于什么地方
      ElementType.CONSTRUCTOR(构造器的声明),
      FIELD(域声明),
      LOCAL_VARIABLE(局部变量声明),
      METHOD(方法声明),
      PACKAGE(包声明),
      PARAMETER(参数声明),
      TYPE(类、接口声明)

    • @Retention:表示需要在什么级别来保存该注解信息,可选的参数包括:
      Retention.SOURCE,编译时刻即丢弃
      CLASS,class文件中可用,运行时丢弃
      RUNTIME,运行时仍然可用

    • @Documented
      将此注解保存在javadoc里

    • @Inherited 允许子类继承父类的注解。

    来一个简单的例子:

    注解类:

    @Retention(RUNTIME)
    @Target(METHOD)
    public @interface Senninha {
        //默认值是senninha
        String name() default "senninha";
    }
    

    处理这个注解的方法:

    public class AnnotationTest {
        //使用手动设置值为ayrton
        @Senninha(name = "ayrton")
        public void senninha(){
            System.out.println("this is senninha");
        }
        public static void main(String[] args){
            AnnotationTest test = new AnnotationTest();
            try {
            //通过反射获取方法里是否包含注解,并且获取注解里的方法值。
                Method m = test.getClass().getMethod("senninha", null);
                Senninha s = m.getAnnotation(Senninha.class);
                if(s == null){
                    System.out.println("don't have annotation");
                }else{
                    System.out.println("have annotation");
                    //注解里的值变为了我们定义的ayrton
                    System.out.println(s.name());
                }
            } catch (NoSuchMethodException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:注解入门

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