本篇文章帮大家学习java注解类型,包含了Java注解类型使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。

标记注解类型

标记注解类型是没有元素的注解类型,甚至没有默认值。标记注解由注解处理工具使用。

public @interface Marker {

}

@Marker

public class Main{

}

元注解类型

元注解类型是注解类型,用于注解其他注解类型。元注解类型是Java类库的一部分。它们在包java.lang.annotation中声明。

以下注解类型是元注解类型:

目标

保留

继承

文档记录

可重复的

本地

目标注释类型

目标注释类型注释注释类型以设置上下文以使用注释类型。它只有一个名为value的元素。 其值元素是java.lang.annotation.ElementType枚举类型的数组。下表列出了ElementType枚举中的所有常量。

常量名称

描述

ANNOTATION_TYPE

注释另一个注释类型声明,使注释类型为元注释。

CONSTRUCTOR

注释构造函数。

FIELD

注释字段和枚举常量。

LOCAL_VARIABLE

注释局部变量。

METHOD

注释方法。

PACKAGE

注释包声明。

PARAMETER

注释参数。

TYPE

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

TYPE_PARAMETER

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

TYPE_USE

注释所有类型的使用。

以下Version注释类型具有目标元注释,它指定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();

}

Version注释不能用于除其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();

}

}

如果不使用Target注释类型注释注释类型,则注释类型可以用作任何声明的修饰符,但类型参数声明除外。

保留(Retention)注释

保留(Retention)注释设置注释类型的保留策略。注释可以在三个级别保留 -

仅源代码

仅类文件,默认行为。

类文件和运行时

保留(Retention)元注释类型指定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元注释注释,则其实例将由子类声明继承。如果使用注释类型注释除类声明以外的任何元素,它没有任何效果。以下代码显示了

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 A

class 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类声明上的Version注释也会作为文档的一部分生成。

可重复注释

Java 8添加了可重复元注释类型。如果在一个单独的代码元素上重复使用它,注释类型声明必须用

Repeatable注释类型只有一个名为value的元素,其类型是另一个注释类型的类类型。

import java.lang.annotation.Repeatable;

@interface LogHistory {

Log[] value();

}

@Repeatable(LogHistory.class)

@interface Log {

String date();

String comments();

}

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

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

public class Main {

public static void process() {

}

}

本地注释

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

java注解类型_Java注解类型相关推荐

  1. java uv实例_Java注解的实际应用案例讲解

    前言 注解确实是一个很强大的功能,是的开发效率大幅度提高.在Android开发中,比较有名气的注解框架当属:Butterknife.https://github.com/JakeWharton/but ...

  2. java 反射 注解 运用_Java注解与反射的使用

    打开 Eclipse,新建 Java 项目"注解与反射",在 src 下右键并建立包 "注解与反射",在包下右键并建立 Annotation (注解)文件,名称 ...

  3. java注解机制_Java 注解机制

    一.注解中的信息已经在Class中了,我们应该如何读取出来 1 java.lang.reflect.AnnotatedElement接口:2 3 publicAnnotation[] getAnnot ...

  4. Java注解库_Java 注解详解

    本文部分摘自 On Java 8 基本语法 注解是 Java 5 所引入的众多语言变化之一,是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影 ...

  5. java注解编程_java 注解 基本原理 编程实现

    java 1.5开始引入了注解和反射,正确的来说注解是反射的一部分,没有反射,注解无法正常使用,但离开注解,反射依旧可以使用,因此来说, 反射的定义应该包含注解才合理一些.当然,这只是个人想法,至于j ...

  6. java 注解使用_Java 注解用法

    Java 注解用法 1.简述 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) 与程序元素(类.方 ...

  7. java method 注释_Java注解

    Java注解 注解概述 3.注解 3.1.注解,或者叫做注释类型,英文单词是:Annotation 疑问:注解到底是干啥的????????? 3.2.注解Annotation是一种引用数据类型.编译之 ...

  8. java注解编程_Java注解编程原理

    一.先了解以下4个元注解 @Documented 具体来说是生成说明文档时把类的解释添加进去. @Inherited 允许子类继承父类中的注解 @Target 表示该注解用于什么地方,可能的值在枚举类 ...

  9. Java注解 编译_Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)

    注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理.在编译期处理注解时,会处理到不再产生新的源文件为止,之后再对所有源文件进行编译. Java5中提供了apt工具来进行编译期的注解处 ...

最新文章

  1. (转载)(官网)UE4--Character
  2. Node.js Web 模块
  3. easyui js解析字符串_js相关:详解Jquery Easyui的验证扩展
  4. leetcode 算法解析(一):260. Single Number III(C++版本和自己的注解)
  5. SAP Spartacus State
  6. pearsonr() python_十分钟搞懂“Python数据分析”
  7. scrapy学习笔记(二)进阶使用
  8. es6 Trait修饰器
  9. 搜狗开源最新NLP研究成果,打造业内最全机器阅读理解工具包SMRC
  10. I00019 生成全8数
  11. Android 学习心得体会
  12. 名称不存在或不是目录_大数据从入门到深入:LINUX 04 文档目录管理
  13. rpc portmap rpcbind vxi11
  14. 搜索引擎这样用才有效率
  15. 数据筛选特征方法-方差法
  16. 网页设计期末作品_平面、网页、UI设计师该如何做作品集?
  17. PHP网站发短信到手机
  18. spring aop 记录controller层的入参和出参
  19. 小猿圈python之python期末考试测试题(二)_小猿圈Python开发面试题(二)
  20. 电子设计中-电源地,信号地,大地等知识点总结

热门文章

  1. 项目管理:软件工程相关知识笔记
  2. Windows常用的网络命令
  3. ASP.NET MVC的过滤器笔记
  4. SQL Server 2008 R2:快速清除日志文件的方法
  5. 2017年,软件开发全过程,描述得不能再详细了
  6. 【SQL语句】MySql、SqlServer查询近期记录
  7. Android 第三课 Activity的生命周期
  8. 源码群友问:你这么多项目是怎么进行技术选型的?
  9. 毕业年限不长的前端焦虑和突破方法
  10. Java 之 JavaScript (一)