JavaSE基础---Annotation(注解) | 黄乔国JAVA

7 篇文章 0 订阅

JavaSE—Annotation

一,目录

  • 注解入门
  • 内置注解
  • 自定义注解
  • 元注解
  • 通过反射解析自定义注解

二,注解入门

Annotation是从JDK5.0引入的新技术

Annotation的作用
  • 不是程序本身,可以对程序作出解释(和普通注释没什么区别).
  • 可以被其他程序(如:编译器)读取,(注解信息处理流程,是注解和注释的重大区别,如果没有注解的信息处理流程,则注解毫无意义).
Annotation的格式

注解以”@注解名”在代码中存在,还可以添加一些参数值,比如:@SuperWarnings(value=”unchecked”);

Annotation在什么地方使用?

可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问.

三,内置注解

@Override

定义在java.lang.Override中,此注解只适用于修饰方法,表示一个方法声明打算重写超类中的另一个方法声明.

@Deprecated

定义在java.lang.Deprecated中,此注解只适用于修饰属性,方法,类,表示不鼓励程序员使用这样的元素,这种元素通常是被遗弃,或者已经过时,或者使用时很危险,(通常版本升级:有些方法不想再被使用,但是又不想影响老的程序,那么就可以用这个注解)

@SuppressWarnings

定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息.
与之前两个注解有所不同,需要添加一个参数才能正确使用,这些参数值都是已经定义好的,我们选择性的使用就好了,参数如下:

@SuppressWarnings(“unchecked”)
@SuppressWarnings(value={“unchecked”,”deprecation”})

四,自定义注解

@interface

使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口

要点

@interface用来声明一个注解
格式:public @interface 注解名{定义体}
其中的每一个方法实际上是声明了一个配置参数:

  • 方法名就是参数的名称
  • 返回值类型就是参数的类型(返回值类型只能是基本类型,Class,String,enum).
  • 可以通过default来声明参数的默认值
  • 如果只有一个参数成员,一般参数名为value
注意
  • 注解元素必须要有值,我们在定义注解元素时,经常使用空字符串,0作为默认值,
  • 也经常使用负数(比如:-1)表示不存在的含义

五,元注解

元注解的作用就是负责注解其他注解,Java定义了四个标准的meta-annotation类型
它们被用来提供对其他annotation类型作说明.
这些类型和他们所支持的类在java.lang.annotation包中可以找到:

  • @Target
  • @Retention
  • @Documented
  • @Inherited
@Target

作用:
用于描述注解的使用范围(即:描述注解可以用在什么地方)

主要用ElementType来取值,如:
@Target(vaue=ElementType.Type)

@Retention

作用:
表示需要在什么级别保存改注解信息,用于描述注解的生命周期.

取值:RetentionPolicy作用
SOURCE在源文件中有效(即源文件保留)
CLASS在class文件中有效(即class保留)
RUNTIME运行时有效,可以用反射机制读取(重点)

如:
@Retention(RetentionPolicy.RUNTIME)
定义注解:

使用注解:

@Documented

用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

@Inherited

@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。
当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

六,通过反射来解析注解

通过解析实体类和注解来生成对应的建表语句

实体
表结构
属性字段
对象一行数据

表语句:

实体类

注解
表注解:

字段注解:

给实体加上注解

反射解析注解

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
java jdk api帮助文档中文版 JavaTM Platform Standard Ed. 6 所有类 软件包 java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans.beancontext java.io java.lang java.lang.annotation java.lang.instrument java.lang.management java.lang.ref java.lang.reflect java.math java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.text.spi java.util java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax.activity javax.annotation javax.annotation.processing javax.crypto javax.crypto.interfaces javax.crypto.spec javax.imageio javax.imageio.event javax.imageio.metadata javax.imageio.plugins.bmp javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.jws javax.jws.soap javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.management javax.management.loading javax.management.modelmbean javax.management.monitor javax.management.openmbean javax.management.relation javax.management.remote javax.management.remote.rmi javax.management.timer javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.net javax.net.ssl javax.print javax.print.attribute javax.print.attribute.standard javax.print.event javax.rmi javax.rmi.CORBA javax.rmi.ssl javax.script javax.security.auth javax.security.auth.callback javax.security.auth.kerberos javax.security.auth.login javax.security.auth.spi javax.security.auth.x500 javax.security.cert javax.security.sasl javax.sound.midi javax.sound.midi.spi javax.sound.sampled javax.sound.sampled.spi javax.sql javax.sql.rowset javax.sql.rowset.serial javax.sql.rowset.spi javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.plaf.synth javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml.bind.helpers javax.xml.bind.util javax.xml.crypto javax.xml.crypto.dom javax.xml.crypto.dsig javax.xml.crypto.dsig.dom javax.xml.crypto.dsig.keyinfo javax.xml.crypto.dsig.spec javax.xml.datatype javax.xml.namespace javax.xml.parsers javax.xml.soap javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stax javax.xml.transform.stream javax.xml.validation javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.xpath org.ietf.jgss org.omg.CORBA org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.portable org.omg.CORBA.TypeCodePackage org.omg.CosNaming org.omg.CosNaming.NamingContextExtPackage org.omg.CosNaming.NamingContextPackage org.omg.Dynamic org.omg.DynamicAny org.omg.DynamicAny.DynAnyFactoryPackage org.omg.DynamicAny.DynAnyPackage org.omg.IOP org.omg.IOP.CodecFactoryPackage org.omg.IOP.CodecPackage org.omg.Messaging org.omg.PortableInterceptor org.omg.PortableInterceptor.ORBInitInfoPackage org.omg.PortableServer org.omg.PortableServer.CurrentPackage org.omg.PortableServer.POAManagerPackage org.omg.PortableServer.POAPackage org.omg.PortableServer.portable org.omg.PortableServer.ServantLocatorPackage org.omg.SendingContext org.omg.stub.java.rmi org.w3c.dom org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle_PHP|JAVA|安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值