/*注解(Annotation)*/(注解相当于一个特殊的类,注解类@interface A)

了解注解及java提供的几个基本注解
1. @SuppressWarnings
  指示应该在注释元素(以及包含该注释元素中的所有程序元素)中取消指定的编译器警告
  如:@SuppressWarnings("deprecation");
2. @Deprecated(如:告诉程序该方法是已过时的方法)
  用@Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。
3. @Override
  表示一个方法声明打算重写超类中的另一个方法声明

注解类        应用了注解类的类        对 "应用了注解类的类"进行反射操作的类
@interface A      @A                class C {
{           class B {                 B.class.isAnnotationPresent(A.class);
                             A a = B.class.getAnnotation(A.class);
}           }                             }

一个注解的生命周期有三个阶段(Resource->Class->RUNTIME)

  java源文件 ---> class 文件 ---> 内存中的字节码     /*javac命令    Java文件变成class文件 ,class文件并不是字节码文件,要通过java命令运行到内存中才是字节码文件*/

  javac把源文件编译成class文件的时候可能去掉那个注解 ,java 把文件调到内存里面来也可能去掉那个注解
  /*所以在设计注解类的时候,加上元注解@Retention,声明这个注解的生命周期在哪个阶段*/ SOURCE CLASS RUNTIME (默认CLASS阶段)

@Override @SuppressWarnings 给编译器用的 SOURCE阶段
@Deprecated RUNTIME阶段(在一个程序调用某个过时的方法,需要将该方法加载到内存中才能去使用)

/*元注解@Target*/ @Target({ElementType.METHOD,ElementType.Type}) //Type 类、接口(包括注释类型)或枚举声明
所以如果某个注解想 用到注解 接口 枚举上,需要用@Target(ElementType.Type)去指定

Class 只是java中的一种类型,Class 这个类 实现了Type接口,Type比Class更精准
注解 接口 枚举 这些都不能算作Class,用Type描述这一类事物

如:注解类型:Overrid @Target(value=METHOD) //只能应用于注解方法
@Retention(value=SOURCE)

/*为注解增加基本属性*/
什么是注解的属性
  一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是一名学生,否则,就不是。如果还想区分是哪个学校的学生
  这时候可以为胸牌再增加一个属性来进行区分。加了属性的标记效果为 : @MyAnnotation(color = "red")

  1.在注解类中属性的定义(跟写一个方法类似) String color();
  2.注解属性的赋值和应用 (类似于调用一个方法) @MyAnnotation(color = "red");
    MyAnnotation a = AnnotationTest.class.getAnnotation(MyAnnotation.class);
    System.out.println(a.color());
  3.可以为属性指定缺省值 String color() default "yellow";
  4.如果注解中有一个名称为value的属性,且只需要设置value属性(即其他属性采用默认值,或只有value属性)
    String value() default "xzk"; //定义
    @MyAnnotation("xzk1"); //赋值
  5.数组类型的属性
    int[] arrayAttr() default{1,2,3};
    @MyAnnotation(arrayAttr={1,2,3,4}); //如果数组类型只有一个元素,则可以省略花括号
   6.枚举类型的属性 注解类型的属性
    //MetaAnnotation annoAttr() default @MetaAnnotation("***"); (MetaAnnotation 也是自己设计的,有一个唯一的String属性value)
    @MyAnnotation(annoAttr = "@MetaAnnotation("****")");
   7.注解属性的类型(1.  8种基本数据类型   2.String   3.Class   4.枚举   5.注解   6.前面几种类型的数组类型) (注解的属性可以是注解)

Java基础加强-注解的更多相关文章

  1. Java基础教程——注解

    注解 JDK 5开始,Java支持注解. 注解,Annotation,是一种代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取并执行,而且不改变原有的逻辑. 注解可以用于:生成文档.编译检查. ...

  2. 【转载】JAVA基础:注解

    原文:https://www.cnblogs.com/xdp-gacl/p/3622275.html#undefined 一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的 ...

  3. java基础篇---注解(Annotation)

    一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关 ...

  4. Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)

    1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...

  5. java基础之注解

    包含成员变量及方法的注解称之为元数据, 不包含任何成员的注解称之为标记. 用@interface定义注解, 使用类似于接口方法的方式来定义注解的属性,其中返回值成为属性的类型,方法名为属性的名称. p ...

  6. Java 基础之--注解Annotation详解

    自定义注解入门: public @interface Annotation01 { //set default value ""; String value() default & ...

  7. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  8. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  9. java基础解析系列(六)---深入注解原理及使用

    java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer ja ...

随机推荐

  1. PyToune:一款类Keras的PyTorch框架

    PyToune is a Keras-like framework for PyTorch and handles much of the boilerplating code needed to t ...

  2. Spark源码资料汇总

    近几月,想要了解Spark的内部实现原理,因此想要查阅Spark的源码信息,现将所了解的资料汇总如下: 1. 博客文字类 (1) 官网 1) github 2) Spark官网 (2) gitbook ...

  3. postman--接口网站测试

    直接在官网下载安装即可 https://www.getpostman.com/downloads/

  4. Java文章翻译

    一.基础 1.String 使用" "还是构造函数创建字符串? 画图说明字符串的不变性 在Java中字符串为什么是不可变的 Java中的字符串是按引用传递? 排名前十的Java字符 ...

  5. 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除

    目录 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除 18.1 centos6系统启动过程及相关配置文件 18.1.1 centos6系统启动过程 18.1.2 centos6启 ...

  6. MYSQL的读写分离主从延时问题

    如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...

  7. DataNode 详解及HDFS 2.X新特性

    1. 工作机制 一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳. DataNode 启动后向 Name ...

  8. [转帖]Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    Linux环境变量设置方法总结 PATH.LD_LIBRARY_PATH 2018年01月17日 21:10:26 晨至曦 阅读数 7548 https://blog.csdn.net/qq_1900 ...

  9. 洛谷 P4198 楼房重建 线段树维护单调栈

    P4198 楼房重建 题目链接 https://www.luogu.org/problemnew/show/P4198 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上 ...

  10. 剑指offer1: 组类型——二维数组中的查找(给定一个数字,查找是否在该数组中)

    1. 思路: 缩小范围 2. 方法: (1)要查找的数字等于数组中的数字,结束查找过程: (2)要查找的数字小于数组中的数字,去除该数字右边的数字,在剩下的数字里查找: (3)要查找的数字大于数组中的 ...