zoukankan      html  css  js  c++  java
  • Java关键技术强化:JDK5.0新特性 (day08)

    “最快的脚步不是跨越,而是继续。”


    •  运行环境

      jdk1.8.0_131

      IntelliJ IDEA 2018.3 x64

     

    •  目录

      • 基本的Annotation
      • 自定义的Annotation
      • 为注解添加属性
      • 元注解
      • 会提取注解信息

     

     

    •  Annotation(注解) 概述

      • 从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)。
      • Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。
      • Annotation 可以像修饰符一样被使用, 可用于修饰包,类, 构造器, 方法, 成员变量, 参数, 局部变量,的声明, 这些信息被保存在 Annotation 的 “name=value” 对中。
      • Annotation 能被用来为程序元素(类, 方法, 成员变量等) 设置元数据。

      

    • 基本的 Annotation

      • 使用 Annotation 时要在其前面增加 @ 符号, 并把该 Annotation 当成一个修饰符使用. 用于修饰它支持的程序元素。
      • 三个基本的 Annotation:
        • @Override: 限定重写父类方法, 该注释只能用于方法。
        • @Deprecated: 用于表示某个程序元素(类, 方法等)已过时。
        • @SuppressWarnings: 抑制编译器警告。
    • 自定义 Annotation

      • 定义新的 Annotation 类型使用 @interface 关键字。
      • Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型。
      • 可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字。
      • 没有成员定义的 Annotation 称为标记; 包含成员变量的 Annotation 称为元数据 Annotation。

      

      代码示例

      

      

     1 package com.chenmengfan.demo2;
     2 
     3 import java.lang.reflect.Field;
     4 import java.lang.reflect.Method;
     5 import java.util.Arrays;
     6 
     7 public class TestMyAnnotation {
     8     /*
     9     * @param args
    10     * */
    11     public static void main(String[] args){
    12         //读取加在类上的注解
    13         read1();
    14         //读取加在字段上的注解
    15         read2();
    16         //读取加在方法上的注解
    17         read3();
    18     }
    19 
    20     private static void read3() {
    21         Class clz = Person.class;
    22         try {
    23             Method method = clz.getMethod("fun");
    24             if (method.isAnnotationPresent(MyAnnotation.class)) {
    25                 MyAnnotation myanno = (MyAnnotation) method.getAnnotation(MyAnnotation.class);
    26             }
    27         } catch (SecurityException e) {
    28             // TODO Auto-generated catch block
    29             e.printStackTrace();
    30         } catch (NoSuchMethodException e) {
    31             // TODO Auto-generated catch block
    32             e.printStackTrace();
    33         }
    34     }
    35 
    36     private static void read2() {
    37         Class clz = Person.class;
    38         try {
    39             Field field = clz.getDeclaredField("name");
    40             if (field.isAnnotationPresent(MyAnnotation.class)) {
    41                 MyAnnotation myanno = (MyAnnotation) field.getAnnotation(MyAnnotation.class);
    42             }
    43         } catch (SecurityException e) {
    44             // TODO Auto-generated catch block
    45             e.printStackTrace();
    46         } catch (NoSuchFieldException e) {
    47             // TODO Auto-generated catch block
    48             e.printStackTrace();
    49         }
    50     }
    51 
    52     private static void read1() {
    53         Class clz = Person.class;
    54         // 判断Person类上是否有MyAnnotation注解
    55         if (clz.isAnnotationPresent(MyAnnotation.class)) {
    56             // 得到加在Person类的MyAnnotation注解
    57             MyAnnotation myanno = (MyAnnotation) clz.getAnnotation(MyAnnotation.class);
    58             System.out.println("value=" + myanno.value());
    59             System.out.println("x=" + myanno.x());
    60             System.out.println("ary=" + Arrays.toString(myanno.ary()));
    61             System.out.println("newanno=" + myanno.newanno().value());
    62         }
    63     }
    64 }
    • 总结

         成功就是简单的事情重复做!

        

    •  END

        为了不错过每天的见面,请记得点击一下【关注】啊~

        

        作者:javagril,00后女生,一个IT界冉冉升起的新星,想带你遨游缤纷多彩的编程世界。

      

  • 相关阅读:
    jquery插件库收集网站
    百度地图api笔记
    css3 hover 动画
    使用Slip.js快速创建整屏滑动的手机网页
    mobile移动端,PC桌面端页面无刷新过场JS骨架
    zepto.js手机端网页上下手指滑动图片切换效果代码
    onepage-scroll – jQuery单页/全屏滚动插件
    css3loading动画
    onepage scorll全屏滚动插件
    css3动画集
  • 原文地址:https://www.cnblogs.com/cmf12/p/13586009.html
Copyright © 2011-2022 走看看