Java中的注释是一种描述性文字,它可以帮助开发人员更好地理解代码。它可以让开发人员更容易地阅读和维护代码,并且可以帮助其他开发人员快速了解代码的功能。
Java中有三种注释:单行注释、多行注释和文档注释。单行注释是由“//”开头的一行文本,它会对整行代码进行注释;多行注释是由“”结尾的一段文本,它会对多行代码进行注释;文档注释是由“”结尾的一段文本,它会生成HTML格式的API文档。
// 单行注释
注释类型中的元素的数据类型可以是任何基本数据类型:byte,short,int,long,float,double,boolean和char。
Version注释类型声明两个元素,major和minor,并且都是int数据类型。
以下代码声明了注释类型:
public @interface MyAnnotation { byte a(); short b(); int c(); long d(); float e(); double f(); boolean g(); char h(); }
@MyAnnotation(a=1, b=2, c=3, d=4, e=12.34F, f=1.89, g=true, h="Y")
我们可以使用编译时常量表达式来指定注释元素的值。
以下两个版本注释实例有效:
@Version(major=2+1, minor=(int)13.2) @Version(major=3, minor=13)
我们可以在注释类型中使用String类型的元素。
以下代码定义了名为Name的注释类型。它有两个元素,first和last,它们是String类型。
public @interface Name { String first(); String last(); } @Name(first="Tom", last="Smith") public class NameTest { @Name(first="Jack", last="Iaan") public void aMethod() { } }
在String类型的元素的值表达式中使用字符串连接运算符+是有效的。
@Name(first="Ja" + "ck", last="Ia" + "an")
以下代码显示如何使用类类型作为注释值。
import java.io.IOException; @interface MyAnnotation { Class<? extends Throwable> willThrow() default java.lang.Throwable.class; } public class Main { @MyAnnotation(willThrow = IOException.class) public static void testCase1() { // Code goes here } @MyAnnotation() public static void testCase2() { } }
注释可以具有枚举类型的元素。
enum Level { PENDING, FAILED, PASSED; } @interface Review { Level status() default Level.PENDING; String comments() default ""; } @Review(status = Level.PASSED) public class Main { }
我们可以使用注释类型作为另一个注释类型的声明内的元素的类型。
要为注释类型的元素提供值,请使用用于创建注释类型实例的语法。
@interface Name { String first(); String last(); } @interface Version { int major(); int minor() default 0; // zero as default value for minor } @interface Description { Name name(); Version version(); String comments() default ""; } @Description(name = @Name(first = "Tom", last = "Smith"), version = @Version(major = 1, minor = 2), comments = "Just a test class") public class Main { }
注释可以具有数组类型的元素。数组类型可以是以下类型之一:
我们需要在大括号中指定数组元素的值。
数组的元素由逗号分隔。
@interface ItemList { String[] items(); } @ItemList(items = { "A", "B" }) public class Main { }
如果数组中只有一个元素,则允许省略括号。
@ToDo(items={"A"}) @ToDo(items="A")
传递一个空数组
@ToDo(items={})
假设我们有一个注释类型如下。
public @interface Enabled { boolean status() default true; }
要使用带有默认值的Enabled注释类型注释程序元素,我们可以使用@Enabled()语法。
我们不需要为status元素指定值,因为它具有默认值。
我们可以进一步省略括号。
@Enabled public class Main { } @Enabled() public class Main { }
只有一个元素的注释类型具有速记语法。
如果注释类型只有一个具有命名值的元素,我们可以省略name = value对中的名称。
以下代码声明了公司注释类型,它只有一个名为value的元素:
public @interface Company { String value(); }
当使用公司注释时,我们可以省略name = value对的名称。
@Company(value="Inc.") public class Test { }
变成
@Company("Inc.") public class Test { }
以下代码显示了如果元素数据类型是数组,如何使用此缩写。
public @interface Item { String[] value(); } @Item({"A", "B"}) public class Test { }
如果我们在数组注释类型中只指定一个元素,我们可以进一步省略大括号。
@Item("A") public class Test { }
如果我们在数组注释类型中只指定一个元素,我们可以进一步省略大括号。
Java面向对象设计 - Java枚举类型什么是枚举类型?枚举类型创建常量的有序列表作为类型。它以特定顺序指定常量。在枚举类型中定...
Java面向对象设计 -Java枚举主体将主体添加到枚举常量我们可以为每个枚举常量添加一个不同的体。身体可以有字段和方法。枚举常量...
Java面向对象设计 -Java接口方法方法声明您可以在接口中声明三种类型的方法:抽象方法静态方法默认方法在Java 8之前,您只能在接...
Java面向对象的设计 -Java异常使用访问线程的堆栈以下代码显示了如何获取线程的堆栈帧。Throwable对象在创建线程的点处捕获线程...
Java面向对象设计 -Java异常处理异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。Java通过将执行操作的代码...