java注释类型_Java 8类型注释

java注释类型

Lambda表达式是迄今为止Java 8讨论最多和最受促进的功能。虽然我同意Lambda是一个很大的改进,但我认为其他一些Java 8功能由于Lambda的炒作而有所欠缺。 在这篇文章中,我想展示另一个来自Java 8的出色特性的示例:Type Annotations。

类型注释是可以放置在使用类型的任何位置的注释。 这包括new运算符,类型强制转换,Implements子句和throws子句。 类型注释可以改进对Java代码的分析,并可以确保更强大的类型检查。

在源代码中,这意味着我们获得了两个用于注释的新ElementType:

@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface Test {
}

枚举值TYPE_PARAMETER允许在类型变量(例如MyClass <T>)上应用注释。 目标TYPE_USE的注释可以应用于任何类型的使用。

请注意,发布Java 8时,以下示例的注释将无法立即使用。 Java 8仅提供定义这些注释类型的功能。 然后由框架和工具开发人员实际使用它。 因此,这是将来可能为我们提供的注释框架的集合。 大多数示例取自“ 类型注释”规范和各种Java 8演示。

具有类型注释的简单类型定义如下所示:

@NotNull String str1 = ...
@Email String str2 = ...
@NotNull @NotBlank String str3 = ...

类型注释也可以应用于嵌套类型

Map.@NonNull Entry = ...

具有类型注释的构造函数:

new @Interned MyObject()
new @NonEmpty @Readonly List<String>(myNonEmptyStringSet)

它们也与嵌套(非静态)类构造函数一起工作:

myObject.new @Readonly NestedClass()

类型转换:

myString = (@NonNull String) myObject;
query = (@Untainted String) str;

遗产:

class UnmodifiableList<T> implements @Readonly List<T> { ... }

我们可以将类型注释与泛型类型参数一起使用:

List<@Email String> emails = ...
List<@ReadOnly @Localized Message> messages = ...
Graph<@Directional Node> directedGraph = ...

当然,我们可以嵌套它们:

Map<@NonNull String, @NonEmpty List<@Readonly Document>> documents;

或将它们应用于交集类型:

public <E extends @ReadOnly Composable<E> & @Localized MessageSource> void foo(...) { ... }

包括参数范围和通配符范围:

class Folder<F extends @Existing File> { ... }
Collection<? super @Existing File> c = ...
List<@Immutable ? extends Comparable<T>> unchangeable = ...

具有类型注释的泛型方法调用如下所示:

myObject.<@NotBlank String>myMethod(...);

对于泛型构造函数,注释遵循显式类型参数:

new <String> @Interned MyObject()

抛出异常:

void monitorTemperature() throws @Critical TemperatureException { ... }
void authenticate() throws @Fatal @Logged AccessDeniedException { ... }

在instanceof语句中键入注释:

boolean isNonNull = myString instanceof @NonNull String;
boolean isNonBlankEmail = myString instanceof @NotBlank @Email String;

最后是Java 8方法和构造函数参考:

@Vernal Date::getDay
List<@English String>::size
Arrays::<@NonNegative Integer>sort

结论

类型注释是对Java类型系统的有趣补充。 它们可以应用于任何类型的使用,并可以进行更详细的代码分析。 如果要立即使用Type批注,则应查看Checker Framework 。

参考:来自我们的JCG合作伙伴 Michael Scharhag的Java 8类型注释 ,位于mscharhag,Programming and Stuff博客中。

翻译自: https://www.javacodegeeks.com/2014/02/java-8-type-annotations.html

java注释类型

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

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

相关文章

[渝粤教育] 西南科技大学 公共组织学 在线考试复习资料

公共组织学——在线考试复习资料 一、单选题 1.从沟通媒介自身的丰富性程度看,排在第一位的应该是( ) A.电话 B.电子邮件 C.面对面地交谈 D.文件 2.“韦伯认为,以古老的传统、神圣不可侵犯的信念,以及对其下属行使权力的人的地位的合法性为基础的权力属于( ) A.合理–合法型…

[渝粤教育] 西南科技大学 刑事诉讼法学 在线考试复习资料

刑事诉讼法学——在线考试复习资料 一、单选题 1.传唤、拘传持续的时间不得超过十二小时;案情特别重大、复杂,需要采取拘留、逮捕措施的,传唤、拘传持续的时间不得超过( )小时。 A.12 B.24 C.48 2.无期徒刑的执行机关是?( ) A.公安机关 B.监狱 C.检察机关 D.人民法院 3.讯问…

android studio简易记账本,Android记账本

十分感谢徐老师用心制作的这个视频&#xff0c;我学到了很多&#xff0c;再次感谢。这里贴一下我对着这个视频写的代码&#xff1a;https://github.com/supertian007/ImoocDaily&#xff0c;欢迎大家参考、或指出问题。记录一下学习过程中遇到的几个问题&#xff1a;1. 视频的b…

Java可选参数

在Java类中设计方法时&#xff0c;某些参数对于其执行而言可能是可选的。 无论是在DTO&#xff0c;胖模型域对象还是简单的无状态服务类中&#xff0c;可选方法参数都是常见的。 从本文中&#xff0c; 您将学习如何在Java中处理可选参数 。 我们将专注于常规方法&#xff0c;带…

[渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(2)

单片机原理与应用——在线考试复习资料 一、单选题 1.信息能够同时双向传送的是( )。 A.并行通信 B.单工串行通信 C.半双工串行通信 D.全双工串行通信 2.T89S52单片机片内有( )个定时器/计数器。 A.1 B.2 C.3 D.4 3.串口通信时,每秒传送120个字符,数据格式为1位起始位、8位数…

android前台进程视频教程,Android Twilio视频通话,唤醒应用程序并进入前台

因此,我们已经找到了解决方案(当收到通知时,将应用程序置于前台),即使已经有一段时间了,我仍在发布它&#xff1a;> FCM通知(firebase云消息传递通知)只需在通知中发送“数据”.因此,通知的JSON结构中没有Notification对象,只有数据.这样,通知便由您应用的FirebaseMessaging…

[渝粤教育] 西南科技大学 土木工程施工 在线考试复习资料(1)

土木工程施工——在线考试复习资料 一、单选题 1.先张法预应力筋放张时,其混凝土应到达设计强度的( )。 A.50% B.75% C.90% D.100% 2.抹灰标志块的厚度为( )。 A.底层厚度 B.中层厚度 C.底层中层厚度 D.底层中层面层厚度 3.预应力超张拉是为了( )。 A.减少预应力筋与孔道摩擦…

[渝粤教育] 西南科技大学 审计原理与实务 在线考试复习资料2021

审计原理与实务——在线考试复习资料2021 一、单选题 1. 注册会计师在执行报表审计业务中,若发现有违法行为,应当予以( )。 A.向主管部门报告 B.拒绝审计 C.向法院起诉 D.向董事会报告 答案:看左边查询 2.注册会计师从1000个应收账款明细账…

android 日期相,Android日历始终保持相同的日期

当用户签入复选框时&#xff0c;我希望闹钟响起。这是我的代码&#xff1a;if (cb1.isChecked()){Calendar calA Calendar.getInstance();//calA.set(Calendar.YEAR, Calendar.YEAR);//calA.set(Calendar.MONTH, Calendar.MONTH);//calA.set(Calendar.DAY_OF_MONTH, Calendar.…

[渝粤教育] 西南科技大学 广告学 在线考试复习资料

广告学——在线考试复习资料 一、单选题 1.下列不属于平面广告表现形式的是( ) A.漫画 B.照片 C.广告视频 D.广告画 2.下列广告媒体出现相对最早的是( ) A.电视 B.网络 C.报纸 D.户外广告牌 3.下列不属于视觉广告的是( ) A.报纸广告 B.电视广告 C.广播广告 D.霓虹灯广告 4.在…

jedis与redis_Redis与Jedis排序

jedis与redis在本文中&#xff0c;我们将讨论Redis SORT命令。 Redis提供了SORT命令&#xff0c;我们可以使用该命令从LIST&#xff0c;SET或ZSET中检索或存储排序的值。 我们可以使用最简单的形式在KEY上使用命令&#xff0c;如下例所示&#xff1a; SORT numbers_list这将…

[渝粤教育] 西南科技大学 微机原理与应用 在线考试复习资料(1)

微机原理与应用——在线考试复习资料 一、单选题 1.十六进制数0A95转换成二进制数是? A.1010 1001 0101 B.0000 1010 0101 C.1000 1010 1001 D.0000 1110 1001 2.设BX2000H,[0003H]16H,[2000H]25H,[2003H]74H,执行指令MOV BX,2000H和指令MOV AL,[BX03H]后,AL中的数据是? A.7…

计算机发送到桌面快捷方式,windows7添加到桌面快捷方式无故消失!

您好&#xff0c;Windows 7设计者在Windows 7中所添加的设计。在默认情况下&#xff0c;只要System Maintenance troubleshooter(系统故障维护&#xff0c;以下简称SMT)检测到桌面的快捷方式已经无效了&#xff0c;将会自动将其删除。每周&#xff0c;SMT(系统故障维护)都会对操…

[渝粤教育] 西南科技大学 政府经济学 在线考试复习资料

政府经济学——在线考试复习资料 一、单选题 1.最优多数规则的优点在于( )。 A.保护每个人的平等权利 B.降低决策成本及保护少数 C.便于投票者实现利益交换 D.保护利益集团 2.不列入预算的国家财政支出称为( ) A.预算外支出 B.预算支出 C.国防支出 D.购买性支出 3.下列各组公…

Java:汇总堆外数据

探索如何以最小的垃圾收集影响和最大的内存利用率创建堆​​外聚合。 使用Java Map&#xff0c;List和Object创建大型聚合通常会产生大量堆内存开销。 这也意味着&#xff0c;一旦聚合超出范围&#xff0c;垃圾收集器将必须清理这些对象。 阅读这篇简短的文章&#xff0c;了解…

[渝粤教育] 西南科技大学 施工组织 在线考试复习资料

施工组织——在线考试复习资料 一、单选题 1.在双代号时标网络计划中,其关键线路是( )。 A.自始至终没有虚工作的线路 B.自始至终没有波形线的线路 C.既无虚工作,又无波形线的线路 D.所需资源最多的工作构成的线路 2.施工现场的道路干线应采用( )布置。 A.一字形 B.U形 C.环形…

计算机房英语单词,主机房是什么意思

1. 介绍了冷热源的选择及空调风系统、水系统、自控系统设计及主机房采取的安全措施&#xff0c;并做了几点设计总结。Presents the selection of cold and heat sources and design of the air system, water system, control system and the safety measures for main equipme…

[渝粤教育] 西南科技大学 材料力学 在线考试复习资料(1)

材料力学——在线考试复习资料 一、单选题 1.对于静定结构,若改变杆件横截面的尺寸,则 。 A.内力不变,位移不变 B.内力改变,位移不变 C.内力不变,位移改变 D.内力改变,位移改变 2.叠加原理用于求解静定结构时,需要满足的条件是 。 A.材料是理想弹性的 B.位移是微…

[渝粤教育] 西南科技大学 现代企业管理 在线考试复习资料

现代企业管理——在线考试复习资料 一、单选题 1.在企业科学管理阶段,泰勒提出的思想是( ) A.人群关系理论 B.需求层次理论 C.科学管理理论 D.双因素理论 2.产品发展期的主要特点是( ) A.销量迅速增加 B.企业利润增长慢 C.成本高、亏损严重 D.需要对产品的进退进行认真选择 3…

html引入latex,如何在html文件中使用MathJax或LaTex?

我无法让它工作&#xff0c;我不确定我做错了什么。我已经下载了MathJax.js&#xff0c;创建了一个html文件&#xff0c;并将其与js文件相关联。我甚至在此处复制并粘贴了之前已回答的问题&#xff0c;只是将vpn(vpn也没有工作&#xff0c;但问题和响应超过三年)的链接更改为我…