java注解類型_Java注解類型

本篇文章幫大家學習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)注釋類型是元注釋,用于注釋可以從本地代碼引用的字段。它是一個標記注釋。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277516.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277516.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux go環境安裝和基本項目結構

最近項目中要用到Go語言,所以簡單總結一下安裝和配置,Go這個語言本身就限定了很多規范,比如項目設置,編程風格等,開發中就不需要再因為各種規范問題糾結了,直接用官方規定的能避免很多坑,下面直…

運輸層

運輸層-TCP 簡介 通俗點來說,運輸層是連接底層和用戶層的,運輸層向它上面的應用層提供通信服務,它屬于通信部分的最高層,同時也是用戶功能的最低層。 運輸層重要功能是復用和分用。復用:發送方不同應用進程可以使用同一…

對AI"出錯"零容忍?美國加強AI推理解釋能力研究

隨著硅谷私企引領人工智能(AI)爆發式發展,美國國防部曾發布報告稱,將“立即采取行動”加速AI和自動化技術研發。據《麻省理工技術評論》雜志網站近日報道,美國國防高級研究計劃局(DARPA)已經著手…

java調用指定瀏覽器_Java調用瀏覽器打開網頁完整實例

本文實例講述了java調用瀏覽器打開網頁的方法。分享給大家供大家參考。具體實現方法如下:package com.yifang.demo;import java.io.file;public class openpagedemo {public static void main(string[] args) {try {//string url "http://www.baidu.com"…

[HDU517] 小奇的集合

題目鏈接 顯然有貪心每次選擇最大的兩個數來做。 于是暴力地把最大的兩個數調整到非負(暴力次數不超過1e5),接下來使用矩陣乘法即可。 \[ \begin{pmatrix} B\\S\\T \end{pmatrix} \begin{pmatrix} 1&1&0\\ 1&0&0\\ 1&1&…

phpStudy

很多朋友在學習php的過程中會看到phpstudy這個東西,那么phpstudy是做什么的呢?有什么用?接下來的這篇文章將個大家來詳細的介紹一下phpstudy的內容。 首先在百度百科上對于phpstudy的定義是一個PHP調試環境的程序集成包。 該程序包集成最新的…

殺入共享汽車市場的PonyCar,是下一個犧牲者還是引領者?

曾幾何時,汽車是財富、地位的象征,擁有一輛汽車就感覺自己處處高別人一等。但如今,汽車已然成為一件隨處可見的商品,甚至已經到車來車往、熙熙攘攘的地步。根據中商產業研究院發布的《2018-2023年中國汽車行業市場前景及投資機會研…

python圖片內容長度識別_Python實現識別圖片內容的方法分析

本文實例講述了Python實現識別圖片內容的方法。分享給大家供大家參考,具體如下:python識別圖片內容。這里我的環境為windows64位,python2.7.14需要用到PIL模塊和tesseract模塊。首先需要安裝pip包管理,安裝方法可參考附錄windows下…

AJAX工具

代碼如下 var AppAjax {baseUrl:AppConfig.apiUrl//【POST請求】,post:function(pUrl,pData,pSuccessFun){pUrl AppAjax.baseUrl pUrl;$.ajax({headers: {token: AppConfig.token},url:pUrl,type:POST,data:JSON.stringify(pData),//pData,//JSON.stringify(),contentType:&q…

厲害了!Intel第九代酷睿參數曝光

2019獨角獸企業重金招聘Python工程師標準>>> 導讀上周有消息稱,Intel第九代酷睿處理器最快于8月1日發布,共有三款主打產品,分別是i9-9900K、i7-9700K和i5-9600K。其中,i9-9900K設計為8核16線程,基礎主頻3.6…

java 連接kafka_設置多個kafka連接接收器

我正在研究從postgreSQL到HDFS的數據流 . 我在HDP 2.6沙箱上設置了融合環境 . 我對postgreSQL的jdbc源配置是namejdbc_1connector.classio.confluent.connect.jdbc.JdbcSourceConnectortasks.max1connection.urljdbc:postgresql://host:port/db?currentSchemaschema&useru…

Web應用性能分析工具—HAR文件

Web應用性能分析工具—HAR文件 來源 https://raynorli.com/2018/06/11/web-performance-analysis-har-file/ 客戶經常有的一個問題就是,我的網頁服務通過你的設備之后,訪問變慢了,這類直觀感受的故障很不好量化,而且基于Web應用的…

【mybatis】mybatis多表聯查,存在一對多關系的,實體中使用List作為字段接收查詢結果的寫法...

實體如下: IntegralGoods  積分商品 IntegralGoodsImg  積分商品圖片 ShelfLog    積分商品自動上架記錄 IntegralGoods :IntegralGoodsImg:ShelfLog   1:n:1 1:1的多表聯查或者m:n的多表聯查 很簡…

lr java腳本_【上海校區】 LR Java腳本編寫方法

之前在某一家銀行也接觸過java寫的性能接口腳本,最近因項目,也需編寫java接口性能測試腳本,腦袋一下懵逼了,有點不知道從何入手。隨后上網查了相關資料,自己又稍微總結了一下,與大家共同分享哈~   首先&a…

Flask Web表單

title: flask學習筆記 subtitle: 3. flask Web表單 date: 2018-12-14 10:17:28 --- Web表單 HTML表單是用戶和web站點或應用程序之間交互的主要內容之一。它們允許用戶將數據發送到web站點。大多數情況下,數據被發送到web服務器,但是web頁面也可以自己攔…

一些PHP函數功能

函數 描述 PHP basename() 返回路徑中的文件名部分。 3 chgrp() 改變文件組。 3 chmod() 改變文件模式。 3 chown() 改變文件所有者。 3 clearstatcache() 清除文件狀態緩存。 3 copy() 復制文件。 3 delete() 參見 unlink() 或 unset()。 dirname() 返回路徑中的目錄名稱部分…

mac java tomcat_mac idea 配置tomcat

mac idea 配置tomcat一、下載安裝tomcat二、有一個 javaWeb項目創建一個javaWeb項目 ,參考第一條,只是在第二步的時候選中java Web就行三、完善web項目在WEB-INF 下新建兩個文件夾,lib(存放jar包)和classes(存放編譯后的文件)打開項目結構設置配置classe…

30342程序格式

1.匯編語言程序格式 2.表達式操作符 轉載于:https://www.cnblogs.com/ZanderZhao/p/11055237.html

初識docker,弄清鏡像和容器

前言: 之前總是有人拿虛擬機和容器做比較。我之前一直理解的容器,就類似于虛擬機快照類似。拿別人的東西就直接用了。在我的虛擬機中安裝一下,環境就搞好了。其實容器是一個徹底解耦的東西。各個軟件相互獨立互不影響 什么是鏡像 從docker本身…

configure 查找依賴庫_Rust在編譯Android的庫時,如何設定依賴的第三方庫引用的C/C++的動態庫的搜索路徑?...

謝邀。不懂android,也不懂OpenCL。但是我嘗試了解了一下你的問題。既然你用了第三方庫,那就得查源碼了。翻開ocl 庫的源碼搜android關鍵字,很容易定位到下面代碼。#https://github.com/cogciprocate/ocl/blob/master/ocl-interop/build.rs}el…