java annotation list_java-注解annotation
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相关推荐
- Java中的注解(Annotation)处理器解析
Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的.一直想详细了解一下其中的原理.很有幸阅读到一篇详细解释编写注解处理器的文章.本文的 ...
- java annotation list_Java 注解 (Annotation)你可以这样学
注解语法 因为平常开发少见,相信有不少的人员会认为注解的地位不高.其实同 classs 和 interface 一样,注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念. 注解的 ...
- Java中的注解--annotation
Java中的基本注解,几乎框架中的注解都是依赖Java中的基本注解,很有必要学习一下Java中的基本注解...jdk 5 增加的新特性 一.注解的定义以及Java中常见的注解 注解就相当于一种标记,加 ...
- Java学习之注解Annotation实现原理
前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...
- 彻底搞懂 Java 中的注解 Annotation
Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 网络上对注解的解释过于严肃.刻板,这并不是我喜欢的风格.尽管这样的 ...
- 详解Java中的注解
在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行. 注解可以做什么 Java中的注 ...
- 深入理解Java注解Annotation及自定义注解
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5. ...
- Java注解Annotation的基本概念
什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法.Annotion(注解)是一个接口,程 ...
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- Java 注解 Annotation
概述 了解 Java 注解前必须先了解元注解. 元注解:描述注解的注解. 如果明白元数据概念就比较好理解元注解 元数据:描述数据的数据. 还是比较抽象哈,下面举个例子说明下. 比如一个txt文件的元数 ...
最新文章
- python -opencv 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos
- python恶搞小程序-有趣的python小程序
- 技巧:Go 结构体如何转换成 map[string]interface{}
- linux常用工具命令
- JavaWeb项目前端规范(采用命名空间使js深度解耦合)
- Sharepoint页面里添加.net托管代码
- s1机试补考补习 9206
- 轻松掌握Redux-Action使用方法
- 中国第一个正式商用SD-WAN项目面世
- SQL语言基础-数据查询
- Python 手写体识别
- 揭秘偷渡史,福建最疯,全村一半人都出国了
- 循序渐进学Java day1
- 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;
- 关于iPhone 6S你想知道的一切
- 山东大学软件工程应用与实践——WeaselTSF(一)
- 基于身高与体重数据集与Auto数据集分别进行线性回归和Lasso回归(代码逐行讲解,超细节)
- 【错题集】python基础之字符串的格式化循环语句与注释
- 分布式之BASE理论
- HackTheBox-Machines-Precious
热门文章
- 凯度信息之美奖揭晓,数据可视化后有多“性感”?
- 【开发者成长】喧哗的背后:Serverless 的挑战
- 共享学习:蚂蚁金服数据孤岛解决方案
- 阿里开发者们的第13个感悟:工程师需要在循环迭代中成长
- 生物智能与AI——关乎创造、关乎理解(上)
- 主动安全,新华三融合生态之力!
- 全面讲解OpenStack技术知识
- 常见的Hadoop十大应用误解
- java mssql jdbc_从零开始学JAVA(05)-连接数据库MSSQL(JDBC代码篇)
- mysql查找无根节点sql_SQL 双亲节点查找所有子节点的实现方法