java注解类型_Java注解类型

本篇文章帮大家学习java注解类型,包含了Java注解类型使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。

标记注解类型

标记注解类型是没有元素的注解类型,甚至没有默认值。标记注解由注解处理工具使用。

public @interface Marker {

}

@Marker

public class Main{

}

元注解类型

元注解类型是注解类型,用于注解其他注解类型。元注解类型是Java类库的一部分。它们在包java.lang.annotation中声明。

以下注解类型是元注解类型:

目标

保留

继承

文档记录

可重复的

本地

目标注释类型

目标注释类型注释注释类型以设置上下文以使用注释类型。它只有一个名为value的元素。 其值元素是java.lang.annotation.ElementType枚举类型的数组。下表列出了ElementType枚举中的所有常量。

常量名称

描述

ANNOTATION_TYPE

注释另一个注释类型声明,使注释类型为元注释。

CONSTRUCTOR

注释构造函数。

FIELD

注释字段和枚举常量。

LOCAL_VARIABLE

注释局部变量。

METHOD

注释方法。

PACKAGE

注释包声明。

PARAMETER

注释参数。

TYPE

注释类,接口(包括注释类型)或枚举声明。

TYPE_PARAMETER

在通用类,接口,方法等中注释类型参数。

TYPE_USE

注释所有类型的使用。

以下Version注释类型具有目标元注释,它指定Version注释类型可以与只有三种类型的程序元素一起使用:任何类型(类,接口,枚举和注释类型),构造函数和方法。

import java.lang.annotation.Target;

import java.lang.annotation.ElementType;

@Target({ ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD })

public @interface Version {

int major();

int minor();

}

Version注释不能用于除其Target注释中指定的三种类型之外的任何程序元素。

import java.lang.annotation.ElementType;

import java.lang.annotation.Target;

@Target({ ElementType.TYPE_USE })

@interface MyAnno {

}

@Target({ ElementType.TYPE_USE })

@interface MyAnno2 {

}

public class Main {

public void processData() throws @MyAnno Exception {

int roundedValue = (@MyAnno2 int) .02;

Main t = new @MyAnno Main();

}

}

如果不使用Target注释类型注释注释类型,则注释类型可以用作任何声明的修饰符,但类型参数声明除外。

保留(Retention)注释

保留(Retention)注释设置注释类型的保留策略。注释可以在三个级别保留 -

仅源代码

仅类文件,默认行为。

类文件和运行时

保留(Retention)元注释类型指定Java应如何保留注释。如果注释类型具有“仅限源代码”保留策略,则在编译到类文件中时将删除其实例。如果保留策略为“仅类文件”,则其实例将保留在类文件中,但不能在运行时读取。如果保留策略为“类文件和运行时”,则注释实例保留在类文件中,并且它们可在运行时读取。保留元注释类型声明一个名为value的元素,它是java.lang.annotation.RetentionPolicy枚举类型。

RetentionPolicy枚举有三个常量:SOURCE,CLASS 和 RUNTIME,它们分别用于指定仅源,仅类和类运行时的保留策略。

以下代码在版本注释类型上使用保留元注释。它指定版本注释应该在运行时可用。

import java.lang.annotation.Target;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

@Target({ ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD })

@Retention(RetentionPolicy.RUNTIME)

@interface Version {

int major();

int minor();

}

如果不对注释类型使用保留元注释,则其保留策略仅默认为类文件。则将无法在运行时读取这些注释。在类文件中或在运行时,局部变量声明上的注释永远不可用,而不考虑注释类型的保留策略。

继承注释类型

继承注释类型是标记元注释类型。如果注释类型使用Inherited元注释注释,则其实例将由子类声明继承。如果使用注释类型注释除类声明以外的任何元素,它没有任何效果。以下代码显示了

import java.lang.annotation.Inherited;

@interface Ann2 {

int id();

}

@Inherited

@interface Ann3 {

int id();

}

@Ann2(id = 1)

@Ann3(id = 2)

class A {

}

// Class B inherits Ann3(id=2) annotation from the class A

class B extends A {

}

文档注释

文档化注释类型是标记元注释类型。如果注释类型用Documented注解,Javadoc工具将为其所有实例生成文档。

import java.lang.annotation.Documented;

@Documented

@interface Version {

int major();

int minor();

}

@Version(major = 1, minor = 0)

public class Main {

}

当使用Javadoc工具为Main类生成文档时,Main类声明上的Version注释也会作为文档的一部分生成。

可重复注释

Java 8添加了可重复元注释类型。如果在一个单独的代码元素上重复使用它,注释类型声明必须用

Repeatable注释类型只有一个名为value的元素,其类型是另一个注释类型的类类型。

import java.lang.annotation.Repeatable;

@interface LogHistory {

Log[] value();

}

@Repeatable(LogHistory.class)

@interface Log {

String date();

String comments();

}

@Log(date = "01/01/2018", comments = "B")

@Log(date = "01/21/2018", comments = "A")

public class Main {

public static void process() {

}

}

本地注释

本地(Native)注释类型是元注释,用于注释可以从本地代码引用的字段。它是一个标记注释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux go环境安装和基本项目结构

最近项目中要用到Go语言,所以简单总结一下安装和配置,Go这个语言本身就限定了很多规范,比如项目设置,编程风格等,开发中就不需要再因为各种规范问题纠结了,直接用官方规定的能避免很多坑,下面直…

运输层

运输层-TCP 简介 通俗点来说,运输层是连接底层和用户层的,运输层向它上面的应用层提供通信服务,它属于通信部分的最高层,同时也是用户功能的最低层。 运输层重要功能是复用和分用。复用:发送方不同应用进程可以使用同一…

对AI"出错"零容忍?美国加强AI推理解释能力研究

随着硅谷私企引领人工智能(AI)爆发式发展,美国国防部曾发布报告称,将“立即采取行动”加速AI和自动化技术研发。据《麻省理工技术评论》杂志网站近日报道,美国国防高级研究计划局(DARPA)已经着手…

java调用指定浏览器_Java调用浏览器打开网页完整实例

本文实例讲述了java调用浏览器打开网页的方法。分享给大家供大家参考。具体实现方法如下:package com.yifang.demo;import java.io.file;public class openpagedemo {public static void main(string[] args) {try {//string url "http://www.baidu.com"…

[HDU517] 小奇的集合

题目链接 显然有贪心每次选择最大的两个数来做。 于是暴力地把最大的两个数调整到非负(暴力次数不超过1e5),接下来使用矩阵乘法即可。 \[ \begin{pmatrix} B\\S\\T \end{pmatrix} \begin{pmatrix} 1&1&0\\ 1&0&0\\ 1&1&…

phpStudy

很多朋友在学习php的过程中会看到phpstudy这个东西,那么phpstudy是做什么的呢?有什么用?接下来的这篇文章将个大家来详细的介绍一下phpstudy的内容。 首先在百度百科上对于phpstudy的定义是一个PHP调试环境的程序集成包。 该程序包集成最新的…

杀入共享汽车市场的PonyCar,是下一个牺牲者还是引领者?

曾几何时,汽车是财富、地位的象征,拥有一辆汽车就感觉自己处处高别人一等。但如今,汽车已然成为一件随处可见的商品,甚至已经到车来车往、熙熙攘攘的地步。根据中商产业研究院发布的《2018-2023年中国汽车行业市场前景及投资机会研…

python图片内容长度识别_Python实现识别图片内容的方法分析

本文实例讲述了Python实现识别图片内容的方法。分享给大家供大家参考,具体如下:python识别图片内容。这里我的环境为windows64位,python2.7.14需要用到PIL模块和tesseract模块。首先需要安装pip包管理,安装方法可参考附录windows下…

AJAX工具

代码如下 var AppAjax {baseUrl:AppConfig.apiUrl//【POST请求】,post:function(pUrl,pData,pSuccessFun){pUrl AppAjax.baseUrl pUrl;$.ajax({headers: {token: AppConfig.token},url:pUrl,type:POST,data:JSON.stringify(pData),//pData,//JSON.stringify(),contentType:&q…

厉害了!Intel第九代酷睿参数曝光

2019独角兽企业重金招聘Python工程师标准>>> 导读上周有消息称,Intel第九代酷睿处理器最快于8月1日发布,共有三款主打产品,分别是i9-9900K、i7-9700K和i5-9600K。其中,i9-9900K设计为8核16线程,基础主频3.6…

java 连接kafka_设置多个kafka连接接收器

我正在研究从postgreSQL到HDFS的数据流 . 我在HDP 2.6沙箱上设置了融合环境 . 我对postgreSQL的jdbc源配置是namejdbc_1connector.classio.confluent.connect.jdbc.JdbcSourceConnectortasks.max1connection.urljdbc:postgresql://host:port/db?currentSchemaschema&useru…

Web应用性能分析工具—HAR文件

Web应用性能分析工具—HAR文件 来源 https://raynorli.com/2018/06/11/web-performance-analysis-har-file/ 客户经常有的一个问题就是,我的网页服务通过你的设备之后,访问变慢了,这类直观感受的故障很不好量化,而且基于Web应用的…

【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法...

实体如下: IntegralGoods  积分商品 IntegralGoodsImg  积分商品图片 ShelfLog    积分商品自动上架记录 IntegralGoods :IntegralGoodsImg:ShelfLog   1:n:1 1:1的多表联查或者m:n的多表联查 很简…

lr java脚本_【上海校区】 LR Java脚本编写方法

之前在某一家银行也接触过java写的性能接口脚本,最近因项目,也需编写java接口性能测试脚本,脑袋一下懵逼了,有点不知道从何入手。随后上网查了相关资料,自己又稍微总结了一下,与大家共同分享哈~   首先&a…

Flask Web表单

title: flask学习笔记 subtitle: 3. flask Web表单 date: 2018-12-14 10:17:28 --- Web表单 HTML表单是用户和web站点或应用程序之间交互的主要内容之一。它们允许用户将数据发送到web站点。大多数情况下,数据被发送到web服务器,但是web页面也可以自己拦…

一些PHP函数功能

函数 描述 PHP basename() 返回路径中的文件名部分。 3 chgrp() 改变文件组。 3 chmod() 改变文件模式。 3 chown() 改变文件所有者。 3 clearstatcache() 清除文件状态缓存。 3 copy() 复制文件。 3 delete() 参见 unlink() 或 unset()。 dirname() 返回路径中的目录名称部分…

mac java tomcat_mac idea 配置tomcat

mac idea 配置tomcat一、下载安装tomcat二、有一个 javaWeb项目创建一个javaWeb项目 ,参考第一条,只是在第二步的时候选中java Web就行三、完善web项目在WEB-INF 下新建两个文件夹,lib(存放jar包)和classes(存放编译后的文件)打开项目结构设置配置classe…

30342程序格式

1.汇编语言程序格式 2.表达式操作符 转载于:https://www.cnblogs.com/ZanderZhao/p/11055237.html

初识docker,弄清镜像和容器

前言: 之前总是有人拿虚拟机和容器做比较。我之前一直理解的容器,就类似于虚拟机快照类似。拿别人的东西就直接用了。在我的虚拟机中安装一下,环境就搞好了。其实容器是一个彻底解耦的东西。各个软件相互独立互不影响 什么是镜像 从docker本身…

configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...

谢邀。不懂android,也不懂OpenCL。但是我尝试了解了一下你的问题。既然你用了第三方库,那就得查源码了。翻开ocl 库的源码搜android关键字,很容易定位到下面代码。#https://github.com/cogciprocate/ocl/blob/master/ocl-interop/build.rs}el…