黑马程序员:Java基础总结----java注解
ASP.Net+Android+IO开发
、
.Net培训
、期待与您交流!
lang包中的基本注解
通过System.runFinalizersOnExit(true);的编译警告引出@SuppressWarnings("deprecation")
@Deprecated
直接在刚才的类中增加一个方法,并加上@Deprecated标注,在另外一个类中调用这个方法。
@Override
public boolean equals(Reflect other)方法与HashSet结合讲解
总结:
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
看java.lang包,可看到JDK中提供的最基本的annotation。
annotation
{
B{}
c{
annotation
.
class
.isAnnotation();}
class
.isAnnotationPresent(
annotation
.
class
);}
annotation
.
class
.getAnnotation(
annotation
.
class
);}
boolean |
isAnnotation()如果此 Class 对象表示一个注释类型则返回 true。 |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass)如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。 |
|
getAnnotation(Class<A> annotationClass)如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。 |
|
Annotation[] |
getAnnotations()返回此元素上存在的所有注释。 |
| Documented | 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。 |
| Inherited | 指示注释类型被自动继承。 |
| Retention | 指示注释类型的注释要保留多久。 |
| Target | 指示注释类型所适用的程序元素的种类。 |
注释类型 Retention 必需元素摘要 |
|
|---|---|
RetentionPolicy |
value |
枚举 RetentionPolicy 枚举常量摘要 |
|
|---|---|
CLASS编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。 |
|
RUNTIME编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 |
|
SOURCE编译器要丢弃的注释。 |
|
(RetentionPolicy.
SOURCE
)
annotation
{
SOURCE,
SOURCE ,
RUNTIME
注释类型 Target 必需元素摘要 |
|
|---|---|
ElementType[] |
value |
枚举 ElementType 枚举常量摘要 |
|
|---|---|
ANNOTATION_TYPE注释类型声明 |
|
CONSTRUCTOR构造方法声明 |
|
FIELD字段声明(包括枚举常量) |
|
LOCAL_VARIABLE局部变量声明 |
|
METHOD方法声明 |
|
PACKAGE包声明 |
|
PARAMETER参数声明 |
|
TYPE类、接口(包括注释类型)或枚举声明 |
|
(RetentionPolicy.
SOURCE
)
(value = { ElementType.
TYPE
, ElementType.
METHOD
}) //常用
annotation
{
在注解类中增加String color();
@MyAnnotation(color="red")
MyAnnotation a = (MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
System.out.println(a.color());
可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象
default
"default"
;
String value() default "zxx";
如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:@MyAnnotation("lhm")。
int [] arrayAttr() default {1,2,3};
@MyAnnotation(arrayAttr={2,3,4})
如果数组属性中只有一个元素,这时候属性值部分可以省略大括
EnumTest.TrafficLamp lamp() ;
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
@MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”) )
可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象,同样的道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:
MetaAnnotation ma = myAnnotation.annotationAttr();
System.out.println(ma.value());
java.lang.annotation.Retention;
java.lang.annotation.RetentionPolicy;
java.lang.annotation.Target;
java.lang.annotation.ElementType;
(lap = Lap.
YELLOW
, value =
"default"
)
class
Ts0 {
public
static
void
main(String[] args)
throws
Exception {
if
(Ts0.
class
.isAnnotationPresent(
annotation
.
class
)) {
annotation
anno = (
annotation
) Ts0.
class
.getAnnotation(
annotation
.
class
);
out
.println(anno.order().value());
(RetentionPolicy.
SOURCE
)
(value = { ElementType.
TYPE
, ElementType.
METHOD
})
annotation
{
int
[] arr()
default
{ 1, 2, 3 };
orAnno
order()
default
@orAnno
(
"123"
);
Lap {
RED
,
GREEN
,
YELLOW
;
orAnno
{
ASP.Net+Android+IO开发
、
.Net培训
、期待与您交流!
黑马程序员:Java基础总结----java注解的更多相关文章
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 黑马程序员_java基础笔记(01)...java的环境搭建
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— JavaSE(Java Standard Edtion java标准版)技术概况 ...
- 黑马程序员_Java基础组成
Java语言基础组成 2.1关键字 main不是关键字,但被JVM所识别的名称. 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关 ...
- 黑马程序员_Java基础:网络编程总结
------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
- 黑马程序员_Java基础:IO流总结
------- android培训.java培训.期待与您交流! ---------- IO流在是java中非常重要,也是应用非常频繁的一种技术.初学者要是能把IO技术的学透,java基础也就能更加牢 ...
- 黑马程序员_JAVA基础知识总结2
------- android培训.java培训.期待与您交流! ---------- IDE ---> Itegrity Development Environment Java EE --- ...
- 黑马程序员_Java基础常识
一.基础常识 1,软件开发 1)什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 常见的软件 系统软件 如:DOS,windows,Linux等. 应用软件: 如:扫雷,迅雷,QQ等 ...
随机推荐
- java中Integer包装类的具体解说(java二进制操作,全部进制转换)
程序猿都非常懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往须要操作Integer,或者各种进制的转换等等.我今天就为大家具体解说一下Integer的使用吧.看代码: ...
- zoj 3665 数论 二分法 两个参数
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4888 标题两个参数,途径:小参数的枚举,然后二分法大参数 想想两个点.以后就不 ...
- 了解ASP.NET 5
通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1) 微软在开发ASP.NET 5(当时被称为ASP.NET vNext)是采用的代号为Project K,所以运行时被称为 ...
- 疯狂html5演讲(两):HTML5简经常使用的元素和属性(一个):html5保留经常使用的元素
html5取出一小部分的元素和属性:主要删除的各种元素和属性与文档相关的风格.例<font>.width等待,html5建议规范css样式表来控制html文档样式. 1.基本元素 < ...
- OpenSUSE13.1安装MongoDB
添加数据库源: sudo zypper ar http://download.opensuse.org/repositories/server:/database/openSUSE_13.1/serv ...
- vim的复制粘贴小结
vim帮助文档里与粘贴板有关的内容如下: vim有12个粘贴板,分别是0.1.2.….9.a.“.+:用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到“(双引号)粘贴板里,同样用 ...
- valid number 判断字符串是否为有效数字
RT,面试题,给定一个字符串判断是否为科学计数法的有效数字.此题各种繁琐考虑.今天终于学会了用有限状态机来处理.理解之后简洁易懂.在此分享我的理解推导思路,大有收获啊. 网上有解法说先记录每个状态代表 ...
- .Net编译之AnyCPU - 进阶者系列 - 学习者系列文章
Visual Studio是一款非常强大的IDE工具,它为我们提供了强大的编码.调试和测试等工具,为我们编好.NET软件提供了强大的支持. 今天早晨想到了Visual Studio编译模式中的CPU类 ...
- 关于 js 中的 call 和 apply使用理解
关于 js 中的 call 和 apply使用理解 在学习新的东西时候,碰到以前看过而又不理解,或则记忆不深的地方不妨回头看看书里知识点,有助于加深理解.正所谓--温故而知新. 废话不多说,直接上代码 ...
- 经历:asp.net oracle 部署问题以及解决方法
原文:[原创]经历:asp.net oracle 部署问题以及解决方法 精简的美丽...... 一.环境 开发环境 win7 64bit Vs2010 ...