zoukankan      html  css  js  c++  java
  • Java入门笔记 08-注解

    1. 注解:通过 @interface 关键字进行定义
    2. 元注解:是一种基本注解,但是它能够应用到其它的注解上面。
    @Retention:解释说明了这个注解的的存活时间。取值如下:

    • RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
    • RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
    • RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

    @Documented:将注解中的元素包含到 Javadoc 中去。
    @Target:指定了注解运用的地方,即当一个注解被 @Target 注解时,这个注解就被限定了运用的场景。

    • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
    • ElementType.CONSTRUCTOR 可以给构造方法进行注解
    • ElementType.FIELD 可以给属性进行注解
    • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
    • ElementType.METHOD 可以给方法进行注解
    • ElementType.PACKAGE 可以给一个包进行注解
    • ElementType.PARAMETER 可以给一个方法内的参数进行注解
    • ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

    @Inherited:如果一个父类被 @Inherited 注解过的注解进行注解的话,并且它的子类没有被任何注解应用的话,那么这个子类就继承了父类的注解。
    @Repeatable

    3. 注解的属性:也叫作成员变量,注解是没有方法的

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TestAnnotation {
      public int id() default -1;
      public String msg() default "Hi";
    }

      上面代码定义了 TestAnnotation 这个注解中拥有 id 和 msg 两个属性。在使用的时候,我们应该给它们进行赋值。赋值的方式是在注解的括号内以 value=”” 形式,多个属性之前用 ,隔开。在注解中定义属性时它的类型必须是 8 种基本数据类型外加 类、接口、注解及它们的数组。注解中属性可以有默认值,默认值需要用 default 关键值指定。

    @TestAnnotation(id=3,msg="hello annotation")
      public class Test1 {}
    @TestAnnotation()
      public class Test2 {}

      如果一个注解内仅仅只有一个名字为 value 的属性时,应用这个注解时可以直接接属性值填写到括号内。

    public @interface Check {
        String value();
    }
    @Check("hi")
    int a;

      还需要注意的一种情况是一个注解没有任何属性,那么在应用这个注解的时候,括号都可以省略。

    public @interface Perform {}
    @Perform
    public void testMethod(){}

    4. Java 预置的注解

    • @Deprecated:用来标记过时的元素
    • @Override:子类要重写父类中被 @Override 修饰的方法
    • @SuppressWarnings:阻止@Deprecated警告
    • @SafeVarargs:参数安全类型注解,提醒开发者不要用参数做一些不安全的操作,它的存在会阻止编译器产生 unchecked 这样的警告。
    • @FunctionalInterface:函数式接口 (Functional Interface) 就是一个具有一个方法的普通接口,函数式接口可以很容易转换为 Lambda 表达式。
  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/dailymatters/p/12296313.html
Copyright © 2011-2022 走看看