文档章节

Java注解(annontation)简说

DLQ丁
 DLQ丁
发布于 2017/07/27 00:41
字数 876
阅读 287
收藏 4

行业解决方案、产品招募中!想赚钱就来传!>>>

Java注解简说

1、Annontation简介:

        Annontation是Java5开始引入的新特征。中文名称一般叫注解。

        它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。

        更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。

        Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。

 

2、默认的三个Annotation类型: 

 @Override:  只能用在方法之上的,用来告诉别人这一个方法是改写父类的。 
 @Deprecated建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
 @SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭。

 

3、怎样设计自己的Annotation

1、例子:

package annotation;   
    
  import java.lang.annotation.Documented;   
  import java.lang.annotation.ElementType;   
  import java.lang.annotation.Retention;   
  import java.lang.annotation.RetentionPolicy;   
  import java.lang.annotation.Target;   
  //作用范围
  @Target(ElementType.TYPE)
  //RetentionPolicy.RUNTIME这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射
  @Retention(RetentionPolicy.RUNTIME)   
  //注解doc文档信息
  @Documented  
  public @interface Description {   
      String value();   
  } 

        @interface是一个关键字,在设计annotations的时候必须把一 个类型定义为@interface,而不能用class或interface关键字。

2、注解简介:

@Target:

@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上

①TYPE(类型  TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上)

②FIELD(应用在属性

③METHOD(应用在方法)

④PARAMETER(应用在参数)

⑤CONSTRUCTOR(应用在构造函数)

⑥LOCAL_VARIABLE(应用在局部变量)

⑦ANNOTATION_TYPE(应用在注解)

⑧PACKAGE(应用在)

 注:如果Annotation类中没有加@Target注解,则默认可以作用在以上所有。

此注解意义就是指定注解的应用范围。

@Retention:

@Retention(保留)注解说明,这种类型的注解会被保留到哪个阶段. 有三个值:
①RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
②RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
③RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用

一般默认设置为: @Retention(RetentionPolicy.RUNTIME) ,这样在程序运行时候就能发现到这个注解。

@Documented:

@Documented 注解表明这个注解应该被 javadoc工具记录.

默认情况下,javadoc是不包括注解的,但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中。

例如:

1、写注解类

@Target(ElementType.METHOD)
// RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射
@Retention(RetentionPolicy.RUNTIME)
// 注解doc文档信息
@Documented()
public @interface UseDocumented {
	String Document();
}

2、写应用类

public class UseAnnotations {
	public static void main(String arg[]) {
		new UseAnnotations().doSomeRetention();
		new UseAnnotations().doSomeDocumented();
	}

	@UseDocumented(Document = "保留注解信息测试")
	public void doSomeRetention() {
		System.out.printf("测试注解类型 'Retention'");
	}

	@UseDocumented(Document = "Hello document")
	public void doSomeDocumented() {
		System.out.printf("测试注解类型 'Documented'");
	}
}

3、生成doc,查看显示效果

 

 

DLQ丁
粉丝 31
博文 18
码字总数 27886
作品 0
丰台
程序员
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.3K
6
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
21
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
研究虚拟机--Jikes RVM

Jikes研究虚拟机(Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机,其早期版本与当前版本分别在通用公共许可证(CPL)与Eclipse公共许可证(EPL)下开...

匿名
2013/02/13
1K
0
tiny php template--TPT

关于TPT TPT是php实现的用于模板解析小工具,全部实现仅仅60行代码。 配置 DIRCOMPILED和DIRTEMPLATE,分别表示模版编译目录和模版文件目录: define('DIRCOMPILED','/compileddiy');define(......

红猪-侠
2013/03/03
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

五分钟搞定WebRTC视频录制

WebRTC中文社区是一个为大家解决在使用WebRTC当中遇到问题所建立的社区,欢迎更多学习和使用WebRTC的人加入进来,一起建设。 视频录制 在之前的文章里我们提到过视频录制的两种方式:客户端录...

死磕音视频
29分钟前
13
0
互联网技术架构的设计原则 - 架构真经

这本书的英文原名是《Principles for Scaling Web Sites》,又名可扩展网站的50条军规,

这先生
31分钟前
13
0
📢📢 (2020.07.29)上午 10:30 📢📢开启第二轮红包赠书📚活动(小板凳请提前准备好)截至本月月末前还有最后 1 轮分享赠书活动 🎁(会在月末直接揭晓)具体...

本文分享自微信公众号 - 日拱一兵(gh_6235a38420b9)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

tan日拱一兵
07/28
0
0
CentOS-Docker安装Elasticsearch(单点)

下载镜像 $ docker pull elasticsearch:7.6.0 运行镜像 $ docker run --restart=always --name elasticsearch -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearc......

-自由人生-
41分钟前
19
0
贼好用的Java工具类库,GitHub星标10k+,你在用吗?

作者:Ryan Wang ryanc.cc/archives/hutool-java-tools-lib 简介 Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失...

路人甲Java
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部