一站式做网站哪家好,wordpress收不到邮箱验证码,怎么建公众号,wordpress 调用分类目录Lambda表达式是迄今为止Java 8讨论最多和最受促进的功能。虽然我同意Lambda是一个很大的改进#xff0c;但我认为其他一些Java 8功能由于Lambda的炒作而有所欠缺。 在这篇文章中#xff0c;我想展示另一个来自Java 8的出色特性的示例#xff1a;Type Annotations。 类型注释… 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 ListString(myNonEmptyStringSet) 它们也与嵌套非静态类构造函数一起工作 myObject.new Readonly NestedClass() 类型转换 myString (NonNull String) myObject;
query (Untainted String) str; 遗产 class UnmodifiableListT implements Readonly ListT { ... } 我们可以将类型注释与泛型类型参数一起使用 ListEmail String emails ...
ListReadOnly Localized Message messages ...
GraphDirectional Node directedGraph ... 当然我们可以嵌套它们 MapNonNull String, NonEmpty ListReadonly Document documents; 或将它们应用于交点类型 public E extends ReadOnly ComposableE Localized MessageSource void foo(...) { ... } 包括参数范围和通配符范围 class FolderF extends Existing File { ... }
Collection? super Existing File c ...
ListImmutable ? extends ComparableT unchangeable ... 具有类型注释的泛型方法调用如下所示 myObject.NotBlank StringmyMethod(...); 对于泛型构造函数注释遵循显式类型参数 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
ListEnglish String::size
Arrays::NonNegative Integersort结论 类型注释是对Java类型系统的有趣补充。 它们可以应用于任何类型的使用并可以进行更详细的代码分析。 如果要立即使用Type批注则应查看Checker Framework 。 参考 mscharhagProgramming and Stuff博客上的JCG合作伙伴 Michael Scharhag的Java 8类型注释 。 翻译自: https://www.javacodegeeks.com/2014/02/java-8-type-annotations.html