java基础-注释

  注释是一种形式的元数据,提供了非程序自身的数据,注释对于被注释的代码没有直接的影响。

  本文主要概括注释的使用,java平台(SE)预定义的注释,类型注释是如跟可插入类型系统连用达到更强的类型检查的,以及如何实现重复注释。

  注释有许多用途,包括:

  • 为编译器提供信息--编译器可以利用注释检查错误或者抑制警告信息
  • 编译时或者部署时处理--软件工具可以处理注释并生成代码,XML文件等等
  • 运行时处理--有些注释在运行时可以被检测到

注释格式

  注释最简单的形式如下:

@Entity

  @符号提示编译器接下来的词是一个注释,示例中注释为Entity,注释中可以包含元素,元素可以是命名的也可以是未命名的,如果注释中仅有一个元素,则元素名称可以省略,如果注释中不含元素,则圆括号可以省略,可以在一个声明中使用多个注释,java8中可以允许使用多个相同名称的注释,又叫重复注释:

//注释中包含元素
@Author(
   name = "Benjamin Franklin",
   date = "3/27/2003"
)
class MyClass() {
//注释中只有一个元素,则名称可省略
@SuppressWarnings("unchecked")
void myMethod() { ... }
//...
}

注释使用的位置

  注释可以应用于声明中,包括类,字段,方法和其他变成元素的声明。一般情况下,每个注释占用一行。

  java8 以后,注释也可以在类型使用的使用的时候应用,如下所示:

//类实例床架表达式
        new @Interned MyObject();
//类型转化
        myString = (@NonNull String) str;
//实现短语
        class UnmodifiableList<T> implements
            @Readonly List<@Readonly T> { ... }
//抛出异常声明
        void monitorTemperature() throws
            @Critical TemperatureException { ... }

  所有注释的形式叫做类型注释。

声明注释

  注释的声明示例:

@interface ClassPreamble {
   String author();
   String date();  int currentRevision() default 1;}

  注释的定义类似于接口,只不过interface关键词前有@符号,实际上注释类型是一种形式接口,注释的主体定义包含了注释的元素声明,元素可以有默认值,添加默认值的方法就是在元素声明后跟上default关键词以及默认值,如上例子所示。

预定义注释类型

  java se API中预定义了多个注释类型,其中有一些是被java编译器用的,有一些是应用与其他注释的。

java语言使用的注释

  在java.lang包中预定义的注释类型有@Deprecated,@Override和SupressWarning。

  @Deprecated提示所注释的元素已经弃用,不应该再使用。当一个被@Deprecated注释所注释的方法,类或者字段被使用时,编译器将产生警告信息。当决定要弃用一个元素时,也应该在javadoc中体现,利用javadoc的@deprecated标签,如下例所示,javadoc标签以小写字母开头:

   // Javadoc此处写javadoc注释
    /**
     * @deprecated
     * explanation of why it was deprecated
     */
    @Deprecated
    static void deprecatedMethod() { }
}

  @Override注释用于通知编译器该注释所注释的方法将覆写父类中的方法,当然,覆写方法不需要用@Override注释,@Override注释的使用能减少错误,如方法名称拼写错误,如果没有成功覆写方法,则编译器将产生错误。

  @SuppressWarnings注释通知编译器抑制指定的错误信息的产生,每条错误信息都属于一个类型,java语言说明书中列出了两种错误信息:deprecation和unchecked。

  @SafeVarargs(java7及以后)注释应用于方法或者构造器上,使用注释时,含有可变变量的方法或者构造器将不会因为对可变变量的可能不安全的操作产生unchecked警告信息。

  @FunctionalInterface注释在java8中引入,使用该注释表明被注释的接口为功能接口。 

其他注释使用的注释

  被用于其他注释的注释叫做元注释(meta-annotations),java.lang.annotation中有多个元注释。

  @Retention注释指定如何存储标记的注释:

  • RetentionPolicy.SOURCE – 标记的注释仅仅保留在源代码层,被编译器忽略
  • RetentionPolicy.CLASS – 标记的注释在编译时被保留,但是会被java虚拟机忽略
  • RetentionPolicy.RUNTIME – 标记的注释在java虚拟机中保留,但是在运行时被忽略

  @Documented注释提示指定的注释在使用时也应该使用javadoc工具撰写文档。

  @Target注释用来限制标记的注释所使用的对象,该注释指定以下元素类型中的一个作为其值:

  • ElementType.ANNOTATION_TYPE 能应用于一个注释
  • ElementType.CONSTRUCTOR 能应用于一个构造器
  • ElementType.FIELD 能应用与一个注释或者属性
  • ElementType.LOCAL_VARIABLE 能应用于一个局部变量
  • ElementType.METHOD 能应用于方法层的注释
  • ElementType.PACKAGE 能应用于包声明
  • ElementType.PARAMETER 能应用于一个方法的参数
  • ElementType.TYPE 能应用于一个类

  @Inherited注释提示标记的注释类型可以从超类继承(默认不能继承),当用户未检索到该类型的注释时,将在其父类中检索该注释,该注释仅能在类的声明中使用。

  @Repeatable注释是从java8开始引入的,提示标记的类型可以对同一个元素使用多次。

类型注释和可插入类型系统

  java8以前,注释只能用在声明当中,java8以后,注释可以应用于任何类使用的地方,比如类实例的创建表达式(new),转化(cast),实现子句以及抛出子句(以上注释的使用位置已举例)。

  类型注释的常见可用于支持改进的类型检查的java编程方式的分析。java8 SE自身并没有提供类型检查的框架,但你可以编写或者是下载一个由一个或多个用于结合java编译器的模块而实现的类型检查框架,如华盛顿大学编写的检查框架Checker Framework

检索注释

  Reflection API中由多个方法可以用来检索注释,返回单个注释的方法,如AnnotatedElement.getAnnotationByType(Class<T>),其行为没有发生改变,java8以后,由于可以重复使用一个类型的注释,由于兼容的原因,重复的注释是存储在一个注释容器内的,由java编译器自动生成,因此当有重复注释时,可先获得多个注释的注释容器,这样传统返回单个注释的方法照样可以使用。java8也引入了一个可以一次返回多个注释的方法,如AnnotatedElement.getAnnotations(Class<T>)。

时间: 2024-12-17 03:15:58

java基础-注释的相关文章

Java基础——注释规范

一.注释格式分类: 1.单行(single-line)注释://-- 2.块(block)注释:/*--*/ 3.文档注释:/**--*/ javadoc有如下: 二.加注释的场景: 1. 基本注释(必须加) (a)类(接口)的注释 (b)构造函数的注释 (c)方法的注释 (d)全局变量的注释 (e)字段/属性的注释 2. 特殊必须加注释(必须加) (a)典型算法 必须有注释. (b)在代码不明晰处必须有注释. (c)在代码修改处加上修改标识的注释. (d)在循环和逻辑分支组成的代码中加注释.

Java基础之理解Annotation(与@有关,即是注释)

Java基础之理解Annotation 一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关联. 更通俗的意思是为程序的元素(类.方法.成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的. Annontation像一种修饰符一样,应用于包.类型.构造方法.方法.成员变量.参数及本地变量的声明语句中.

黑马程序员——Java基础语法(一) --- 关键字、标识符、注释、常量和变量、运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本篇博文主要总结java的基础语法,主要的内容包括:关键字.标识符.注释.常量和变量.运算符几部分. 一.关键字 关键字是被Java语言赋予了特殊含义的单词.关键字中所有的字母都是小写. java中的关键字主要包括如下几部分: 1.用于定

[java基础]文档注释

转载自:http://blog.163.com/hui_san/blog/static/5710286720104191100389/ 前言 Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗? 1)// 注释一行   2)/* ...... */ 注释若干行 3)/** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /**   * .........   * .........   */ 这第三种注释有什么用?javado

Java基础---如何在Java中注释(十)

如何在Java中使用注释 在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上.因此,注释是程序源代码的重要组成部分,一定要加以重视哦! Java 中注释有三种类型:单行注释.多行注释.文档注释 运行结果: 看:被注释的代码块在程序运行时是不会被执行的~~ 我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档. 打开首页,查看下生成的 API 文档 PS:使用文档注释时还可以使用

(5)java基础知识-方法、关键字、命名规则、注释

一.方法 方法相当于功能的实现. public   static   int          max    (int num1, int num2)   {....................} 修饰符     返回类型   方法名   方法(参数可以有N个) 方法体 修饰符: 修饰符是可选的,告诉编译器如何调用该方法.这定义了该方法的访问类型. static: 类方法,可通过类名直接调用 返回类型:方法可以返回一个值.returnValueType的值是方法返回的数据类型.有些方法没有返

第3篇-JAVA基础

第3篇-JAVA基础 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程 初学心得: 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ] 上篇回顾 上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义 本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!! 1.JAVA基础语法格式 JAVA采用unicode编码 1

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

第2篇-JAVA基础

第2篇-JAVA基础 每篇一句 :无论处在任何领域中,即使是在小的事情,都要让每一天有所价值 初学心得: 在学习的过程中,错误是很宝贵的,它一笔"财富",更是一种"价值" (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-24 | JAVA基础] JAVA基础 回顾 在上一篇文章中,最后提到两个问题, 相信读者们已经提前超额完成了"任务" 下面跟着笔者的思路,深入掌握JAVA底层的运行机制 JAVA运行机制 (重中之重) JAV