`
cucaracha
  • 浏览: 141867 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:88166
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36836
社区版块
存档分类
最新评论

[Java 8] 类型注释和插件式类型系统

阅读更多
在 Java 8 之前的版本中,Annotation 只能注释在声明之上。例如类声明,成员变量声明,方法声明等。在 Java 8 之后,Annotation 可以用于类型。这意味着,在代码中的任何地方,只要使用类型就可以使用 Annotation 进行注释。例如,实例化一个类的时候(new),强制类型转换的时候,实现接口的时候(implements),抛出异常的时候(throws)。这种 Annotation 被称作类型注释(Type Annotation)。

类型注释可以是为了让 Java 程序可以确保更为强壮的类型检查。但是在 Java 8 中没有提供类型检查框架,你可以下载或自己编写插件式的类型检查框架,并且与 Java 编译器一起结合使用。

例如,如果你希望你的变量的值不可以是 null,这样可以避免产生 NullpointerException。你就可以编写一个插件式的类型检查系统来进行检查。然后在代码中将你认为不可以为 null 的变量加上类型注释,表明被注释的变量不可以为 null。就像下面这样:
myString = (@NonNull String) str;


当你在编译代码的时候,需要在命令行包含 NonNull 插件模块,如果编译器发现有潜在的问题,则会打印出异常信息。你可以更改代码修正这些异常信息,所有的异常修复后可以避免在程序运行的时候发生 NullpointerException 这样的异常。

你可以编写多个不同的类型检查模块,让每个模块检查不同类型的错误。这样,你就可以在 Java 类型系统之上,创建你自己想要的类型检查系统。

合理地使用类型注释和类型检查系统,可以让你的代码更加健壮,更加不容易出错。

在大多数情况下,你都不需要自己编写类型检查模块。有一些第三方包已经很好地完成了这个工作。例如,华盛顿大学创建的类型检查框架。这个框架已经包含了 NonNull 检查模块、正则表达式检查模块、互斥锁检查模块等。详情可参考:Checker Framework

文章来源:http://www.aptusource.org/2014/03/type_annotations/

分享到:
评论

相关推荐

    IDEA插件之GET/SET自动生成带模版注释插件

    总之,"IDEA插件之GET/SET自动生成带模版注释插件"是IDEA的一个实用扩展,它将get/set方法的生成与自定义注释模板结合,使得代码更具可读性和一致性,是Java开发者的得力助手。通过熟练掌握这类插件的使用,可以显著...

    清除java项目中的注释

    在Java开发过程中,注释是必不可少的部分,它们用于解释代码的功能和逻辑,便于团队协作和后期维护。然而,在某些情况下,比如发布生产环境的代码或者为了优化编译速度,我们可能需要清除代码中的注释。以下将详细...

    本项目是IntelliJ IDEA的插件,能帮助java开发者自动生成javadoc文档注释

    在Java编程中,Javadoc是一种标准的注释方式,用于生成API文档,帮助其他开发者理解代码的功能和用法。本项目是专为IntelliJ IDEA设计的一个插件——Easy Javadoc,其目标是简化Java开发者编写Javadoc的过程,自动...

    阿里java开发代码规范插件(IDEA+ECLIPSE)

    这款插件适用于两大主流Java集成开发环境:IntelliJ IDEA和Eclipse,使得开发者在编码过程中能实时检查并遵循阿里巴巴的Java编码规范。 一、阿里巴巴Java开发规范介绍 阿里巴巴的Java开发规范是业界广泛认可的一套...

    eclipse自动注释插件JAutodoc

    JAutodoc是一款针对Eclipse的自动注释插件,它极大地简化了这个过程,允许程序员自定义注释模板,自动为类、方法、变量等添加注释。 JAutodoc的主要特点包括: 1. **自动化注释生成**:该插件能够根据用户设定的...

    jad-java反编译工具eclipse插件

    总的来说,JAD Java反编译工具的Eclipse插件是开发者分析和理解已编译Java代码的重要辅助工具,它简化了工作流程,提升了开发效率,尤其对于那些需要深入研究第三方库或者调试无源码项目的人来说,是非常有价值的。

    Alibaba Java Coding GuidelinesIDEA插件

    总结来说,Alibaba Java Coding Guidelines IDEA插件是提升Java开发效率和代码质量的得力助手。它通过集成编码规范,让开发者在编码过程中就能实现错误预防,促进了代码的标准化,从而提高了团队协作的效率。无论你...

    去除源代码注释

    - **IDE插件**:许多集成开发环境(IDEs),如Eclipse和IntelliJ IDEA,提供批量去除注释的功能,或者可以通过安装插件实现。 4. **预处理器**: 在编译过程中,预处理器可以处理源代码,如C/C++中的`#ifdef`、`#...

    keil插件包(格式化代码 文件注释 函数注释 当前日期 当前时间)

    Astyle,全称为Artistic Style,是一个开源的源代码格式化工具,支持C、C++、Objective-C、C++/CLI、C#和Java等多种编程语言。它能够按照特定的风格对代码进行自动格式化,包括缩进、空格、括号对齐等,有助于保持...

    java . php 代码统计插件

    1. **代码行数统计**:插件可以计算源代码中的总行数,包括空行、注释行和实际的代码行。这对于理解项目规模和复杂性非常有帮助。 2. **语言区分**:由于同时支持Java和PHP,插件能够分别统计两种语言的代码行数,...

    基于Java的Java源码Eclipse的Script插件 JSEditor.zip

    总之,"JSEditor"插件是Eclipse平台上的一个增强Java脚本编辑体验的工具,它的开源源码为开发者提供了宝贵的参考资料,有助于理解和掌握Eclipse插件开发技术,进一步提升开发效率。对于热衷于Java编程和Eclipse...

    阿里java开发规范插件idea eclipse

    阿里Java开发规范插件是为Java开发者提供的一种工具,它主要应用于IntelliJ IDEA和Eclipse这两个主流的Java集成开发环境(IDE)。该插件旨在帮助开发者遵循阿里巴巴制定的Java编码规范,提升代码质量和可读性,从而...

    jautodoc_1.8.0 eclipse注释插件

    你可以为不同的代码类型配置不同的注释模板,比如对于公共方法和私有方法,可能需要的注释内容和格式是不同的。此外,插件还支持使用占位符,如`@param`和`@return`,它们会在生成注释时被自动替换为实际的参数名和...

    sourceinsight 便捷插件 符合Doxygen的注释标准

    4. openfolder.em:这个插件可能用于快速打开项目文件夹,方便开发者在SourceInsight和文件系统之间快速切换,查看或修改Doxygen配置文件,确保文档生成的准确性。 四、实践应用 在实际使用中,首先安装这些插件到...

    eclipse第二代代码行数、注释行数检查插件

    5. **自定义配置**:可能根据项目需求,用户可能希望排除某些类型的代码或注释进行统计,插件可能提供了相应的配置选项,允许用户根据自己的标准定制统计规则。 6. **可视化展示**:统计结果通常以直观的图形或表格...

    阿里java编码规范IDEA插件

    1. **命名规则**:插件会检查类、接口、方法、变量等的命名是否符合阿里巴巴的命名规范,如类名采用全大写字母的驼峰式命名,常量全大写,变量和方法首字母小写的驼峰式命名,避免使用拼音或英文缩写,确保命名具有...

    自动生成带注释的getter和setter方法(注释)插件

    IntelliJ IDEA作为一款强大的Java IDE,提供了丰富的插件支持,其中就包括能够自动生成带注释的getter和setter方法的插件。 本插件名为"自动生成带注释的getter和setter方法(注释)插件",它的主要功能是在编写类...

    Java反编译插件

    Java反编译插件是开发过程中非常实用的工具,它允许开发者查看和理解Java字节码,从而在没有源代码的情况下研究已编译的类。本文将深入探讨Java反编译的相关知识,以及如何在MyEclipse集成环境中安装并使用这类插件...

    java 反编译工具及插件

    Java反编译工具及插件是开发者在进行代码分析、逆向工程或学习开源软件实现时的重要工具。这些工具能够将已编译的Java字节码转换回接近于原始源代码的形式,帮助我们理解程序的工作原理,排查问题,或者在没有源代码...

Global site tag (gtag.js) - Google Analytics