java 注释种类,Java 注释类型

Java面向对象设计 - Java注释类型

标记注释类型

标记注释类型是没有元素的注释类型,甚至没有默认值。

标记注释由注释处理工具使用。public @interface Marker {

}

@Marker

public class Main{

}

元注释类型

元注释类型是注释类型,用于注释其他注释类型。

元注释类型是Java类库的一部分。它们在包java.lang.annotation中声明。

以下注释类型是元注释类型:Target

Retention

Inherited

Documented

Repeatable

Native

Target注释类型

目标注释类型注释注释类型以设置上下文以使用注释类型。

它只有一个名为value的元素。其值元素是java.lang.annotation.ElementType枚举类型的数组。

下表列出了ElementType枚举中的所有常量。常量名称描述

ANNOTATION_TYPE注释另一个注释类型声明。 这使得注释类型为元注释。

CONSTRUCTOR注释构造函数。

FIELD注释字段和枚举常量。

LOCAL_VARIABLE注释局部变量。

METHOD注释方法。

PACKAGE注释包声明。

PARAMETER注释参数。

TYPE注释类,接口(包括注释类型)或枚举声明。

TYPE_PARAMETER在通用类,接口,方法等中注释类型参数。

TYPE_USE注释所有类型的使用。

以下版本注释类型具有目标元注释,其指定Version注释类型可以与仅有三种类型的程序元素一起使用:任何类型(类,接口,枚举和注释类型),构造函数和方法。import java.lang.annotation.Target;

import java.lang.annotation.ElementType;

@Target({ ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD })

public @interface Version {

int major();

int minor();

}

版本注释不能用于除其Target注释中指定的三种类型之外的任何程序元素。import java.lang.annotation.ElementType;

import java.lang.annotation.Target;

@Target({ ElementType.TYPE_USE })

@interface MyAnno {

}

@Target({ ElementType.TYPE_USE })

@interface MyAnno2 {

}

public class Main {

public void processData() throws @MyAnno Exception {

int roundedValue = (@MyAnno2 int) .02;

Main t = new @MyAnno Main();

}

}

如果我们不与注释目标注释类型注释类型,注释类型可以用作任何声明修饰符,除了一个类型参数声明。

保留注释

保留注释设置注释类型的保留策略。

注释可以在三个级别保留。仅源代码

仅类文件。默认行为。

类文件和运行时

保留元注释类型指定Java应如何保留注释。

如果注释类型具有“仅限源代码”保留策略,则在编译到类文件中时将删除其实例。

如果保留策略是“仅类文件”,则其实例将保留在类文件中,但不能在运行时读取。

如果保留策略为“类文件和运行时”,则注释实例保留在类文件中,并且它们可在运行时读取。

保留元注释类型声明一个名为value的元素,它是java.lang的。 annotation.RetentionPolicy枚举类型。

RetentionPolicy枚举有三个常量SOURCE,CLASS和RUNTIME,它们分别用于指定仅源,仅类和类和运行时的保留策略。

以下代码在版本注释类型上使用保留元注释。它指定版本注释应该在运行时可用。import java.lang.annotation.Target;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

@Target({ ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD })

@Retention(RetentionPolicy.RUNTIME)

@interface Version {

int major();

int minor();

}

如果我们不对注释类型使用保留元注释,则其保留策略仅默认为类文件。我们将无法在运行时读取这些注释。

在类文件中或在运行时,局部变量声明上的注释永远不可用,而与注释类型的保留策略无关。

继承注释类型

继承的注释类型是标记元注释类型。

如果注释类型使用Inherited元注释注释,则其实例将由子类声明继承。

如果使用注释类型注释除类声明以外的任何元素,它没有任何效果。

以下代码显示了@Inherited元注释类型的效果。import java.lang.annotation.Inherited;

@interface Ann2 {

int id();

}

@Inherited

@interface Ann3 {

int id();

}

@Ann2(id = 1)

@Ann3(id = 2)

class A {

}

// Class B inherits Ann3(id=2) annotation from the class Aclass B extends A {

}

文档化注释

文档化注释类型是标记元注释类型。

如果注释类型用Documented注释注释,Javadoc工具将为其所有实例生成文档。import java.lang.annotation.Documented;

@Documented

@interface Version {

int major();

int minor();

}

@Version(major = 1, minor = 0)

public class Main {

}

当使用Javadoc工具为Main类生成文档时,Main类声明上的版本注释也会作为文档的一部分生成。

可重复注释

Java 8添加了可重复元注释类型。

注释类型声明必须用@Repeatable注释注释,如果我们在一个单独的代码元素上重复使用它。

Repeatable注释类型只有一个名为value的元素,其类型是另一个注释类型的类类型。import java.lang.annotation.Repeatable;

@interface LogHistory {

Log[] value();

}

@Repeatable(LogHistory.class)

@interface Log {

String date();

String comments();

}

@Log(date = "01/01/2014", comments = "B")

@Log(date = "01/21/2014", comments = "A")

public class Main {

public static void process() {

}

}

本机注释

Native注释类型是元注释,用于注释可以从本机代码引用的字段。它是一个标记注释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值