编写Java批注

Java 批注的允许的属性类型刻意非常严格,但是允许的类型也可以使用一些简洁的复合批注类型。

考虑教程站点中的示例注释:

package annotation;
@interface ClassPreamble {String author();String[] reviewers();
}

在这里,作者和审阅者具有String和array类型,这与允许的批注属性类型保持一致。 以下是允许的类型的完整列表(从Java 7开始):

  • 任何对Class的参数化调用
  • 枚举类型
  • 注释类型,请注意不允许循环,带注释的类型不能引用自身
  • 一个数组类型,其元素类型为上述类型之一。

现在,要使功能更丰富的ClassPreable,请考虑以这种方式定义的另外两种注释类型:

package annotation;public @interface Author {String first() default '';String last() default '';
}package annotation;public @interface Reviewer {String first() default '';String last() default '';
}

有了这些,ClassPreamble可以由更丰富的Author和Reviewer批注类型组成,方法是:

package annotation;
@interface ClassPreamble {Author author();Reviewer[] reviewers();
}

现在,应用于类的注释如下所示:

package annotation;@ClassPreamble(author = @Author(first = 'John', last = 'Doe'), reviewers = {@Reviewer(first = 'first1', last = 'last1'), @Reviewer(last = 'last2') }
)
public class MyClass {
....
}

这是一个人为设计的示例,仅用于演示注释的组成,但是该方法广泛用于现实世界中的注释,例如,用于定义两个JPA实体之间的多对多关系:

@ManyToMany@JoinTable(name='Employee_Project',joinColumns=@JoinColumn(name='Employee_ID'),inverseJoinColumns=@JoinColumn(name='Project_ID'))private Collection<Project> projects;

参考:在all和其他博客上撰写我们JCG合作伙伴 Biju Kunjummen的Java注释 。

翻译自: https://www.javacodegeeks.com/2012/12/composing-java-annotations.html

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

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

相关文章

Python基础【day02】:字符串(四)

在Python中字符串本身有带很多操作&#xff0c;字符串的特性&#xff0c;不可以被修改 0、字符串常用功能汇总 1、字符串的定义 #定义空字符串>>> name#定义非空字符串 >>> name"luoahong"#通过下标访问 >>> name[1] u#不能修改字符串的值…

cryptojs vue 使用_VueJs里利用CryptoJs实现加密及解密

第一步 安装安装crypto-js第二步 创建在js文件目录下创建一个js文件secret/*** 对页面上输入的密码进行加密传输给后台进行验证&#xff0c;对返回的数据进行解密&#xff0c;在页面展示*/let CryptoJS require(crypto-js); // 引入AES源码jsexport default {/** 对密码进行加…

html5 窗口变形,HTML5画布(变形)

坐标变换案例1&#xff1a;function draw(){var cdocument.getElementById("myCanvas");var cxt c.getContext("2d");cxt.translate(200,50);cxt.fillStylergba(255,0,0,0.25);for(var i0;i<40;i){cxt.translate(25,25);cxt.scale(0.9,0.9);cxt.rotate(…

appium GUI介绍

Appium作为APP端的自动化测试工具&#xff0c;具有很多的有点&#xff0c;今天主要介绍一下它的UI界面&#xff0c;包含其中的一些参数等。主要说的是windows下的APPIUM GUI。 先看一眼它的界面(版本为1.4.16.1) 注: 1.android Settings - Android设置按钮&#xff0c;所有和安…

迭代器模式和Java

大家好&#xff0c;在本文中&#xff0c;我们将检查Iterator Pattern 。 我知道你们中许多人已经使用过一种设计模式&#xff0c;但是也许您没有意识到它是模式&#xff0c;或者不知道它的巨大价值。 根据《 Head First Design 》一书&#xff1a; 迭代器模式提供了一种在不暴…

不使用JavaScript实现菜单的打开和关闭

我在写有菜单栏的网页时&#xff0c;基本都会用响应式设计来适配移动端&#xff0c;例如把不重要的菜单选项隐藏&#xff0c;或者创建一个菜单按钮来控制的菜单的打开和关闭之类的。而我之前一直是使用JavaScript来实现菜单的打开和关闭的&#xff0c;但最近在网上看到有人使用…

负载均衡的几种方式

&#xff08;1&#xff09;HTTP重定向负载均衡。 这种负载均衡方案的优点是比较简单&#xff0c;缺点是浏览器需要每次请求两次服务器才能拿完成一次访问&#xff0c;性能较差。&#xff08;2&#xff09;DNS域名解析负载均衡。 DNS域名解析负载均衡的优点是将负载均衡工作交给…

芝枝.计算机与人文科学,计算机与人文科学

计算机与人文科学(2013-03-13 13:24:17)标签&#xff1a;文化战争名著《静静的顿河》可以说从它诞生起便没有平静过&#xff0c;围绕它的作者所引起的争议&#xff0c;就像它获得诺贝尔文学奖一样&#xff0c;撼动文坛&#xff0c;有人指控肖洛霍夫是个骗子&#xff0c;《静静的…

rto初始化和计算_TCP系列13—重传—3、协议中RTO计算和RTO定时器维护

从上一篇示例中我们可以看到在TCP中有一个重要的过程就是决定何时进行超时重传&#xff0c;也就是RTO的计算更新。由于网络状况可能会受到路由变化、网络负载等因素的影响&#xff0c;因此RTO也必须跟随网络状况动态更新。如果TCP过早重传&#xff0c;则可能会向网络中注入很多…

在Java 8 Lambda上使用Apache Commons Functor功能接口

Apache Commons Functor &#xff08;以下称为[functor]&#xff09;是一个Apache Commons组件&#xff0c;它提供功能性的编程API和已实现的几种模式&#xff08;访问者&#xff0c;生成器&#xff0c;聚合器等&#xff09;。 Java 8具有几个不错的新功能&#xff0c;包括lamb…

HTML5 Canvas游戏开发实战 PDF扫描版

HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧&#xff0c;在介绍HTML5 Canvas相关特性的同时&#xff0c;还通过游戏开发实例深入剖析了其内在原理&#xff0c;让读者不仅知其然&#xff0c;而且知其所以然。在本书中&#xff0c;除…

多线程之创建线程

在Java中&#xff0c;线程能区分两种不同类型的线程&#xff1a;前台线程和后台线程。这两者的区别就是&#xff1a;应用程序必须运行完所有的前台线程才可以退出&#xff1b;而对于后台线程&#xff0c;应用程序则可以不考虑其是否已经运行完毕而直接退出&#xff0c;所有的后…

阿 Q 的停车场

问题描述 刚拿到驾照的 KJ 总喜欢开着车到处兜风&#xff0c;玩完了再把车停到阿 Q 的停车场里&#xff0c;虽然 她对自己停车的水平很有信心&#xff0c;但她还是不放心其他人的停车水平&#xff0c;尤其是 Kelukin。于是&#xff0c; 她每次都把自己的爱车停在距离其它车最远…

css3图片垂直居中

图片相对父元素垂直居中, css3属性给父级元素设置 display: -webkit-box; -moz-box-align: center; -webkit-box-align: center; -moz-box-pack: center; -webkit-box-pack: center; 需要注意的是&#xff1a; 父级元素要有确定的高度&#xff01;

声明式的理解【gpt】

一 MyBatis采用了声明式语法来进行SQL映射配置【mybatis声明式】 MyBatis是一款优秀的持久层框架&#xff0c;支持自定义SQL、存储过程以及高级映射&#xff0c;使得开发人员能够专注于SQL本身而不是数据库访问。MyBatis提供了两种配置方式&#xff1a;XML配置和注解配置&…

网络局域网看不到其它计算机,局域网中看不到其它计算机怎么办

通过网上邻居或查看网络计算机时&#xff0c;看不到局域网中其它计算机&#xff0c;这是怎么回事呢?下面是学习啦小编给大家整理的一些有关看不到局域网中其它计算机的解决方法&#xff0c;希望对大家有帮助!局域网中看不到其它计算机的解决方法打开“控制面板”-“网络和Inte…

iconfont 图标转为字体_iconfont字体图标的使用方法--超简单!

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是…

一罐来统治所有人

跳下内存通道 早在1998年&#xff0c;当我是一名C / C 开发人员时&#xff0c;尝试使用Java时&#xff0c;有关该语言的一些内容对我来说就显得有些恼火了。 我记得很担心这些 为什么没有合适的编辑器呢&#xff1f; C / C 有很多。 我为Java拥有的只是旧的记事本。 当我想要…

Django集合Ueditor

语言版本环境&#xff1a;python3.6 1、win安装步骤&#xff1a; 1 git下载源码https://github.com/zhangfisher/DjangoUeditor 2 解压DjangoUeditor3-master.tar 3 cd C:\Users\fj\Desktop\DjangoUeditor3-master 4 python setup.py install 官方建议使用pip install Djang…

计算机二级高级应用考题,2016计算机二级MSOFFICE高级应用考试真题

2016计算机二级MSOFFICE高级应用考试真题离2016上半年的计算机等级考试只有一个多月了&#xff0c;为了帮助大家尽快考试过关&#xff0c;小编整理了计算机二级office考试题&#xff0c;希望能帮助到大家!(1)下列叙述中正确的是A)一个算法的空间复杂度大&#xff0c;则其时间复…