package cd.itcast.day2;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Date;

import java.util.List;

/**

* 注解

*

* 注解的使用构成: 1,注解的申明 2,在类型(代码)上面打上注解 3,第三方的程序在使用打了注解的类型

*

* 作业:自己设计一套文档标签,如果我在一个类上面加了这些标签,我把这个类作为参数传给一个方法,就能为这个类的注释生成一个API文档文件

*

* @author Administrator

*

*/

public class AnnotationDemo {

/**

* 使用Annotation(使用反射来得到标签实例) A getAnnotation(Class

* annotationClass):得到指定类型的注解实例 Annotation[] getAnnotations():得到该类型上面的所有注释实例

* Annotation[] getDeclaredAnnotations() :返回直接存在于此元素上的所有注释。 boolean

* isAnnotation() : 该类型是否是一个标签类型(Class) boolean isAnnotationPresent(Class

* extends Annotation> annotationClass) :判断该类型上面是否有指定的标签类型

*

* @param args

*/

public static void main(String[] args) throws Exception {

Class c = User.class;

// 说明:annotation也是一种类型

// Class a=MyAnn.class;

if (c.isAnnotationPresent(MyAnn.class)) {

System.out.println("hello");

MyAnn ann = c.getAnnotation(MyAnn.class);

System.out.println(ann.name());

System.out.println(Arrays.toString(ann.names()));

System.out.println(ann.resetDay());

OtherAnn other = ann.other();

System.out.println("other " + other.value());

} else {

System.out.println("fck");

}

Method m = c.getDeclaredMethod("getName");

if (m.isAnnotationPresent(MyAnn.class)) {

System.out.println("方法上面有标签");

}

}

/**

* @SuppressWanings:去掉警告,(去掉警告的类型写在后面括号里面) 标签有自己定义的能放置的位置

*/

@SuppressWarnings(value = "deprecation")

public void dateTest() {

Date d = new Date();

System.out.println(d.toLocaleString());

AnnotationDemo dd = new AnnotationDemo();

dd.someThing();

}

/**

* 标签里面可以有值, 1,一个常量值 2,一个数组

*

* @Deprecated:方法过时

*/

@SuppressWarnings({ "rawtypes", "unused" })

@Deprecated

public void someThing() {

List a = new ArrayList();

}

/**

* 注释一个标签。这个标签没有参数值

*

* @Override:代表当前方法是覆盖一个父类的方法

*/

@Override()

public String toString() {

return super.toString();

}

}

package cd.itcast.day2;

import java.lang.annotation.ElementType;

/**

* 自定义一个注释

* @author Administrator

*

* @Retention:规定定义的这个标签保留到什么时候

* @Target:规定定义的这个标签能加载哪些位置

* ANNOTATION_TYPE:标签上面

* Constructor:构造器上面

* Field:字段

* Local variable:局部变量

* METHOD:方法/方法的返回类型

* PACKAGE:包

* Parmater:方法参数

* TYPE:类/接口/枚举

*/

@Target({ElementType.METHOD,ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnn {

/**

* 在标签里面加参数 类型 属性名称() [default 类型的值]

* 注意:如果在标签里面仅有value这个属性要填,在使用的时候就可以忽略不写

*/

String name() default "itcast";

String[] names() default {};

String value();

WeekDays resetDay();

OtherAnn other();

}

package cd.itcast.day2;

public @interface OtherAnn {

String value();

}

java annotation list_java-注解annotation相关推荐

  1. Java中的注解(Annotation)处理器解析

    Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的.一直想详细了解一下其中的原理.很有幸阅读到一篇详细解释编写注解处理器的文章.本文的 ...

  2. java annotation list_Java 注解 (Annotation)你可以这样学

    注解语法 因为平常开发少见,相信有不少的人员会认为注解的地位不高.其实同 classs 和 interface 一样,注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念. 注解的 ...

  3. Java中的注解--annotation

    Java中的基本注解,几乎框架中的注解都是依赖Java中的基本注解,很有必要学习一下Java中的基本注解...jdk 5 增加的新特性 一.注解的定义以及Java中常见的注解 注解就相当于一种标记,加 ...

  4. Java学习之注解Annotation实现原理

    前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...

  5. 彻底搞懂 Java 中的注解 Annotation

    Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 网络上对注解的解释过于严肃.刻板,这并不是我喜欢的风格.尽管这样的 ...

  6. 详解Java中的注解

    在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行. 注解可以做什么 Java中的注 ...

  7. 深入理解Java注解Annotation及自定义注解

    要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5. ...

  8. Java注解Annotation的基本概念

    什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法.Annotion(注解)是一个接口,程 ...

  9. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  10. Java 注解 Annotation

    概述 了解 Java 注解前必须先了解元注解. 元注解:描述注解的注解. 如果明白元数据概念就比较好理解元注解 元数据:描述数据的数据. 还是比较抽象哈,下面举个例子说明下. 比如一个txt文件的元数 ...

最新文章

  1. python -opencv 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos
  2. python恶搞小程序-有趣的python小程序
  3. 技巧:Go 结构体如何转换成 map[string]interface{}
  4. linux常用工具命令
  5. JavaWeb项目前端规范(采用命名空间使js深度解耦合)
  6. Sharepoint页面里添加.net托管代码
  7. s1机试补考补习 9206
  8. 轻松掌握Redux-Action使用方法
  9. 中国第一个正式商用SD-WAN项目面世
  10. SQL语言基础-数据查询
  11. Python 手写体识别
  12. 揭秘偷渡史,福建最疯,全村一半人都出国了
  13. 循序渐进学Java day1
  14. 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;
  15. 关于iPhone 6S你想知道的一切
  16. 山东大学软件工程应用与实践——WeaselTSF(一)
  17. 基于身高与体重数据集与Auto数据集分别进行线性回归和Lasso回归(代码逐行讲解,超细节)
  18. 【错题集】python基础之字符串的格式化循环语句与注释
  19. 分布式之BASE理论
  20. HackTheBox-Machines-Precious

热门文章

  1. 凯度信息之美奖揭晓,数据可视化后有多“性感”?
  2. 【开发者成长】喧哗的背后:Serverless 的挑战
  3. 共享学习:蚂蚁金服数据孤岛解决方案
  4. 阿里开发者们的第13个感悟:工程师需要在循环迭代中成长
  5. 生物智能与AI——关乎创造、关乎理解(上)
  6. 主动安全,新华三融合生态之力!
  7. 全面讲解OpenStack技术知识
  8. 常见的Hadoop十大应用误解
  9. java mssql jdbc_从零开始学JAVA(05)-连接数据库MSSQL(JDBC代码篇)
  10. mysql查找无根节点sql_SQL 双亲节点查找所有子节点的实现方法