java注解总结
ja va注解总结
篇一:
J ava注解总结 Ja va注解总结
一、理解注解Anntatin(注解 ) 是 JDK
5.0 及以后版本引入的一个特性。注解是(@int erface) Ja va 的一个新的类型(与接口很相似),它与类(Class)、接口(inter face)、枚举(e num)是在同一个层次。我们可以定义注解、声明注解、获得注解,并且根据获得的注解做相应的处理,许多框架都大量应用了注解,以后继续学习。
二、对于java.lang.Annta tin的理解所有定义的注解类型到会继承该Anntatin接口,定义注解需要使用@interface。以下为定义了一个注解Anntatin Test:
package .h djava.annt atin; publ ic @interf ace Anntat inTest { S tring para m = “hell” String[]value ; } }
a. 注解可以定义final 静态属性,即使不写明关键字系统也会默认为fi nal静态属性。当注解中的属性名为val ue时,在对其赋值时可以不指定属性的名称而直接写上属性即可;除了 value意外的其他值都需要使用n ame=value这种复制方式,即明确指定给谁赋值例如:
@Anntat inTest(val ue=”hell”)或者@Anntati nT est(”hel l”)
b. 注解可以定义公共抽象的方法
1. 方法前默认会加上 publ ic abstrac t
2. 在声明方法时可以定义方法的默认返回值。例如 : Str ing valuedefault “h ell” ;
3.方法返回值可以是 8 种基本类型,String 、C lass 、枚举、注解及这些类型的数组。 c.注解定义说明
1.当我们使用@interface关键字定义一个注解时,该注解隐含地继承了 java.lang.anntatin.Anntatin接口;
2.如果我们定义了一个接口,并且让该接口继承自An ntatin,那
么我们所定义的依然是接口而不是注解;
3.Anntatin本身是接口而不是注解。可以与Enum类比。
三、三个J ava基本注解
3.
1、@v erride 该注解用在方法前面,用来标识该方法是重写父类的某个方法。 pack age .hdjav a.anntatin; public c lass verri deTest { @verride pu blic Strin g tString{ return t his is
ver rideTest t String }}
3.
2、@Depreca ted 该注解的作用是标记某个过时的类或方法。packag e .hdjava.anntatin;public cla ss Depreca tedTest {
@Deprecate d public s tatic viddSmething{System.ut.println(d nthing } public s tatic vidmain(Strin g[] args){ dSmethin g; } } 3.
3、@Su ppressarni ngs 该注解的作用是阻止编译器发出某些警告信息。它可以有以下参数 : dep recatin :
过时的类或方法警告。例如:
ne Date.tL cal unchec ked :
执行了未检查的转换时警告。例如 Listlist = neArrayListfallthrugh:
当 Si tch 程序块直接通往下一种情况而没有Break 时的警告。path :
在类路径、源文件路径等中有不存在的路径时的警告。 r ial :当在可序列化的类上缺少 rialVer sinUID 定义时的警告。
final ly :
任何 finally 子句不能完成时的警告。 all :
关于以上所有情况的警告。
四、元注解元注解就是用来对注解类进行注解的注解。
4.1@Retentin它是被定义在一个注解类的前面,用来说明该注解的生命周期。它有以下参数:
RetentinP licy.SURCE:
指定注解只保留在一个源文件当中。 Retenti nPlicy.CLA SS :
指定注解只保留在一个c lass 文件中。
RetentinPl icy.RUNTIM E :
指定注解可以保留在程序运行期间。
4.2 Retentin Plicy 枚举类型:
定义了Re tentin的类型public enu m Retentin Plicy { SU RCE, CLASS, RUNTIME}
4.3@Target 它是被定义在一个注解类的前面,用来说明该注解
可以被声明在哪些元素前。它有以下参数:
Eleme ntType.TYP E :
说明该注解只能被声明在一个类前。 Elemen tType.FIEL D :
说明该注解只能被声明在一个类的字段前。 Ele mentType.M ETHD :
说明该注解只能被声明在一个类的方法前。
ElementTyp e.PARAMETE R :
说明该注解只能被声明在一个方法参数前。
Ele mentType.C NSTRUCTR :
说明该注解只能声明在一个类的构造方法前。
Elem entType.LC AL_VARIABL E :
说明该注解只能声明在一个局部变量前。
Elem entType.AN NTATIN_TYP E :
说明该注解只能声明在一个注解类型前。
Ele mentType.P ACKAGE :
说明该注解只能声明在一个包名前。如果不加该注解表示可以声明在任何位置
篇二:
Java元数据总结:
Java注释的使用和定义 Ja va元数据总结:
Java注释的使用和定义阅读次数: 425次发布时间:
201X-08-02 11:44:45发布人: 一他糊涂的博客来源: 一他糊涂的
博客元数据从metadata一词译来,就是“关于数据的数据”的意思。越来越的开源框架都提供了“元数据”支持了,其实也就是注释支持。今天系统学习一下Jav a注释(Java元数据)。本文内容不限于Javadc的注释。
1.什么是J ava元数据,有什么作用? 元数据,就是“关于数据的
数据”。功能也有很多啦。你可能用过Javadc的注释自动生成文档。这就是元数据功能的一种。总的来说,元数据可以用来创建文档,跟踪代码的依赖性,执行编译时格式检查,代替已有的配置文件(如
Hi bernate也提供了注释配置) 注释有3中基本类型 a.标记注释 --没有变量,只有名称标识。例如 @an
ntatin b.单一值注释--在标记注释的基础上提供一段数据。如@anntatin(“data”) c.完整注释--可以包括多个数据成员,每个数据成员由名称和值构成。
@anntati n(val1= da ta1 ,val2= data2 )
2.Java的“注释” Java中提供3个内置注释类型a. verride,只能用于方法(不能用于类,包声明或者其他构造) 作用:可以保证编译时候verride函数的声明正确性用法:
@verri de publicvid fun{..} b.Deprec ated 同样只能作用与方法作用:
对不应再使用的方法进行注解用法:
@Deprec ated publi c vid fun{...} //它们说这个注释跟函数要同一行 c.Supres sarnings 可以注释一段代码作用:
关闭特定的警告信息,例如你在使用泛型的时候未指定类型用法:@Supressar nings(valu e={ unchec ked }) ..代码 Java中还提供了四种元注释,专门负责注释其他的注释@Target 表示该注释可以用于什么地方。可用的Elemen tType参数包括:
CNSTR UCTR : 构造器的声明 FIELD: 域声明(包括en um实例) LCAL_VARIABLE: 局部变量声明M ET
HD : 方法声明 PACKAGE: 包声明 PARA METER : 参数声明 TYPE :类、接口 (包括注解类型) 或enum声明 @Retenti n 表示需要在什么级别保存该注释信息。可选的Retentin Picy参数包括:
SURCE: 注释将被编译器丢掉 CLASS :注释在class文件中可
用,但会被VM丢弃 RUNTIME: VM将在运行时也保留注释,因此可以通过反射机制读取注释的信息。 @Dcume nted 将注释包含在JavaDc
中@Inheried 允许子类继承父类中的注释。
3. 在Java中定义自己的注释 Jav a语言支持一种新的类型——注释类型(an ntatin typ e),跟普通类差不多,在类中以符号( @ )的形式注释其他Java 代码下面将通过一个简单的例子来实现(代码是
Bre tt McLaugh lin 的) @in terface 申明 i.简单的注释类型package .reilly.tig er.ch06; /** * Marke r anntatin t indicat e that a m ethd r cla ss * is st ill in prg ress. */ p ublic @int erface InP rgress { } ii.使用定制的注释类型 @.reil ly.tiger.c h0
6.InP rgress pub lic vid ca lculateInt erest(flat amut,flat rate) { //Need t fi nish thismethd late r } iii.添加成员package .reilly.t iger.ch06; /** * Mar ker anntat in t indic ate that a methd r c lass * isstill in p rgress. */ public
@i nterface I nPrgress { String va lue; } @.r eilly.tige r.ch0
6.InPrgress@TD( Figur e ut the a munt f int erest permnth ) //或者@TD(value= Figure u t the amun t f intere st per mnt h ) public vid calcu lateIntere st(flat am unt,flat r ate) { } i v.
设置默认值 pa ckage .rei lly.tiger.ch06; publ ic @interf ace GrupTD { publicenum Serve rity
{ CRI TICAL,IMPR TANT,IRIVI AL,DCMENTA TIN }; Sev erity ve rity defau lt Severit y.IMPRTANT; String i tem ; Stri ng assigne dT; String dateAssig ned; } } v.使用默认值 @.r eilly.tige r.ch0
6.InPrgress@GrupTD( i tem= Figur e ut the a munt f int erest permnth , ass ignedT = B rett McLau ghlin , da teAssigned= 08/04/201X ) publ ic vid cal culateInte rest(flatamunt, fla t rate) {//Need t f inish this methd lat er } vi.改写默认值 @.reil ly.tiger.c h0 6.InP rgress @Gr upTD { v erity =
Gr upTD.Sever ity.DCUMEN TATIN, ite m = Need t explain h this
rath er unusalmethd rks, assigned T = Jn Ste vens , dat eAssigned