java基础篇4之注解
1 注解的应用(jdk1.5的新特性)
一个注解相当于一个特殊的类
例子:
@SuppressWarning("deprecation")
@Deprecated
@Override
注解相当于一种标记,在程序中加了注解等于为程序打上了某种标记,编译器和工具类通过反射来了解你的类及某种元素
上有无何种标记,有标记就去干相应的事
标记可以加在包,类,字段,方法,方法的参数以及局部变量上
2 注解的定义与反射调用
注解类
@interface A{}
应用了“注解类”的类
@A
class B{}
对“应用了注解类的类”进行反射操作的类
class C{
B.class.isAnnotionPresent(A.class);
A a = B.class.getAnnotion(A.class)
}
例子如下:
//元注解
@Retention(RetentionPolicy.RUNTIME)
public @interface itcastAnnotation{} @itcastAnnotation
public class AnnotationTest{
if(AnnotationTest.class.isAnnotionPresent(itcastAnnotation.class)){
itcastAnnotation annotaion =(itcastAnnotation)AnnotationTest.class.getAnnotion(itcastAnnotation.class);
}
}
Annotation保留生命周期
1、RetentionPolicy.SOURCE (编译器查看)
2、RetentionPolicy.CLASSS (默认)
3、RetentionPolicy.RUNTIME (运行时阶段,检查二进制代码)
@Target(ElementType.METHOD,ElementType.TYPE)
注解的应用范围
3 为注解增加各种属性
@Retention(RetentionPolicy.RUNTIME)
public @interface itcastAnnotation{
String color() default "bule";
String value(); //只有一个属性,则可以省略属性名称
int[] arrayAttr() default {1,2,3};
EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");
} @itcastAnnotation(annotationAttr=@MetaAnnotation("fix"),color="red",arrayAttr={3,4,5})
@itcastAnnotation("xyz")
public class AnnotationTest{
if(AnnotationTest.class.isAnnotionPresent(itcastAnnotation.class)){
itcastAnnotation annotaion =(itcastAnnotation)AnnotationTest.class.getAnnotion(itcastAnnotation.class);
annotaion.color//red
annotation.annotationAttr().value();//fix
}
} public @interface MetaAnnotation {
String value();
}
java基础篇4之注解的更多相关文章
- 小白—职场之Java基础篇
java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- java基础解析系列(六)---注解原理及使用
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer缓存及 ...
- Java基础篇 - 强引用、弱引用、软引用和虚引用
Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...
- java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...
- java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
随机推荐
- Kafka SSL 配置
#!/bin/bash # 生成服务器keystore(密钥和证书)keytool -keystore server.keystore.jks -alias machine03.zheng.com - ...
- 04 JVM是如何执行方法调用的(上)
重载和重写 重载:同一个类中定义名字相同的方法,但是参数类型或者参数个数必须不同. 重载的方法在编译过程中就可完成识别.具体到每一个方法的调用,Java 编译器会根据所传入参数的生命类型来选取重载方法 ...
- sqlserver 取时间段重复或者不重复的数据
declare @str datetime, @end datetime select @str='2013-04-05',@end='2013-04-10'select * from arp_hbs ...
- linux批量匹配移动文件的方法
需求 有需要移动的文件名清单 filename.txt filename.txt 内容如下: 15542842 1582457 1282427 1532158 4542457 1582453 6552 ...
- 201621123034 《Java程序设计》第4周学习总结
Week04-面向对象设计与继承 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:对象.重载.继承.多态 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需 ...
- 用日志记录Linux用户执行的每一条命令(history)
工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案.这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也 ...
- Java注解解析-搭建自己的注解处理器(CLASS注解使用篇)
该文章是继Java注解解析-基础+运行时注解(RUNTIME)之后,使用注解处理器处理CLASS注解的文章.通过完整的Demo例子介绍整个注解处理器的搭建流程以及注意事项,你将知道如何去搭建自己的注解 ...
- 物理的alpha blend
alpha blend主要是可以用来模拟半透明的笔触..然而它是有缺陷的.. 因为一般的alpha blend的(线性混合)模型没有考虑反射光的问题..然而其实反射光是很重要的大家都知道.. 好..如 ...
- Ubuntu 查看默认软件安装位置
tags: Linux 方法 1:在命令行输入:dpkg -L 软件包名: 方法 2:在/var/cache/apt/archives找的你安装程序的包,然后用gdebi-gtk+软件包名可以查看具体 ...
- SQL中的CASE WHEN使用
原文发布时间为:2010-06-04 -- 来源于本人的百度文章 [由搬家工具导入] SQL的条件语句,条件判断语句,SQL的 if else语句。2009-07-20SQL_中的CASE WHEN使 ...