Java 学习指南_学习Java:注解基础

注解基础

注解的格式

最贱的注解格式实例如下:

1
@Entity

标志符号 (@) 向编译器表示紧跟着的信息是注解,下面的例子注解的名字为Override:

1
2
@Override
void mySuperMethod() { ... }

注解可以包含元素 elements,可以是署名的,也可以是匿名的,元素有对应的值:

1
2
3
4
5
@Author(
name = "Benjamin Franklin",
date = "3/27/2003"
)
class MyClass() { ... }

或者

1
2
@SuppressWarnings(value = "unchecked")
void myMethod() { ... }

如果只有一个名为value的元素,那么元素署名可以省略,如下:

1
2
@SuppressWarnings("unchecked")
void myMethod() { ... }

如果注解不包含元素,那么小括号也可以移除,就像之前的@Override注解.

也可以在统一个声明或者定义处使用多个注解:

1
2
3
@Author(name = "Jane Doe")
@EBook
class MyClass { ... }

如果多个注解拥有同样的类型,叫做重复注解repeating annotation:

1
2
3
@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }

重复注解在Java SE8中支持的,获取更多相关信息可以参看 Repeating Annotations.

注解类型可以是java.lang或者java.lang.annotation包中的一种。之前的例子中Override and SuppressWarnings预定义注解predefined Java annotations.你也可以定义自己的注解类型, AuthorEbook 注解是自定义注解类型。

注解可以用在哪里

注解可以用定义:类,字段,方法以及其他编程元素定义时可以使用。挡在定义时使用注解,按照惯例每一个注解占一行.

Java SE8 版本中,注解同样可以应用在类型使用时,以下是一些列子:

  • 类型实例创建表达式:

    1
    new @Interned MyObject();
  • 类型转换:

    1
    myString = (@NonNull String) str;
  • implements 引用时:

    1
    2
    class UnmodifiableList<T> implements
    @Readonly List<@Readonly T> { ... }
  • 声明抛出异常时:

    1
    2
    void monitorTemperature() throws
    @Critical TemperatureException { ... }

这种形式的注解叫做类型注解 type annotation.获取更多相关信息,参考 类型注解与插件式类型系统Type Annotations and Pluggable Type Systems.

Enjoy it ? Donate me ! 欣赏此文?支持一下 !