1. 程式人生 > >Java 註解 Annotation

Java 註解 Annotation

一、Annotation工作方式

從Java5.0版本釋出以來,5.0平臺提供了一個正式的annotation功能:允許開發者定義、使用自己的annotation型別。

此功能由一個定義annotation型別的語法和一個描述annotation宣告的語法,讀取annotation的API,一個使用annotation

修飾的class檔案,一個annotation處理工具(apt)組成。

annotation並不直接影響程式碼語義,但是它能夠工作的方式被看做類似程式的工具或者類庫

它會反過來對正在執行的程式語義有所影響。 annotation可以從原檔案、class檔案或者以執行時反射

的多種方式讀取。

二、Java註解

1、Override註解

    表示子類要重寫(override)父類的對應方法

    java.lang.Override是個Marker annotation,使用者標識的Annotation,Annotation名稱本身即表示了要給工具程式的資訊

2、 Deprecated註解

    表示方法是不建議被使用的。

3、SuppressWarning註解

  表示抑制警告

三、自定義註解

1.定義一個註解

public @interface AnnotationTest {
	//屬性value
	String value();
}

使用註解

@AnnotationTest("hello")
public class AnnotationUsage {
	
	@AnnotationTest("world")
	public void method() {
		System.out.println("usage of annotation");
	}
	
	public static void main(String[] args) {
		AnnotationUsage usage = new AnnotationUsage();
		usage.method();
	}
}

2、 給註解增加預設值和列舉值

public @interface AnnotationTest {
	//屬性value,default設定預設值
	String value() default "hello";
	EnumTest value2();
}

enum EnumTest{
	Hello,
	World,
	Welcome;
}

  使用註解

@AnnotationTest(value2 = EnumTest.Welcome)
public class AnnotationUsage {
	
	@AnnotationTest(value="world", value2 = EnumTest.World)
	public void method() {
		System.out.println("usage of annotation");
	}
	
	public static void main(String[] args) {
		AnnotationUsage usage = new AnnotationUsage();
		usage.method();
	}
}

三、註解的呼叫

1、建立註解

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
	
	String hello() default "tom";
	
	String world();
}

2、在類和方法中使用註解

@MyAnnotation(hello="beijing", world="shanghai")
public class MyTest {
	
	@MyAnnotation(hello="hangzhou", world="xihu")
	@Deprecated
	@SuppressWarnings("unchecked")
	public void output() {
		System.out.println("output something");
	}
}

3、使用反射測試

public class MyReflection {
	
	public static void main(String[] args) throws Exception {
		MyTest myTest = new MyTest();
		Class<MyTest> c = MyTest.class;
		Method method = c.getMethod("output", new Class[]{});
		if(method.isAnnotationPresent(MyAnnotation.class)){
			
			method.invoke(myTest, new Object[]{});
			MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation.class);
			String hello = myAnnotation.hello();
			String world = myAnnotation.world();
			System.out.println(hello + ", " + world);
		}
		
		Annotation[] annotations = method.getAnnotations();
		for(Annotation annotation : annotations){
			System.out.println(annotation.annotationType().getName());
		}
	}
}

  輸出結果

output something
hangzhou, xihu
com.example.annotation.MyAnnotation
java.lang.Deprecated

 四、Target的使用

1、定義一個註解,target為方法,只能被方法使用

@Target(ElementType.METHOD)
public @interface MyTarget {
	String value();
}

2.使用

如上圖,類中使用該註解就會報錯。

相關推薦

JAVA註解Annotation

深入理解java java註解 annotation 註解處理器 annotatedelement 從 JDK 5.0 開始, Java 增加了對元數據(MetaData) 的支持, 也就是 Annotation(註解)Annotation 其實就是代碼裏的特殊標記, 這些標記可以在編譯,

Java註解(annotation)機制

前言 jdk1.5引入了註解機制(Annotation),用於對java裡面的元素(如:Class、Method、Field等等)進行標記。同時,java的反射類庫也加入了對Annotation的支援,因此我們可以利用反射來對特殊的Annotation進行特殊的處理,增強程式碼的語義。 本文

Java註解Annotation使用

Java註解Annotation的使用 RuntimeAnnotation註解 package annotation; import java.lang.annotation.ElementType; import java.lang.annotation.

深入JAVA註解 Annotation 自定義註解

一、基礎知識:元註解   要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java為我們提供的元註解和相關定義註解的語法。 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotatio

Java 註解 Annotation

一、Annotation工作方式 從Java5.0版本釋出以來,5.0平臺提供了一個正式的annotation功能:允許開發者定義、使用自己的annotation型別。 此功能由一個定義annotation型別的語法和一個描述annotation宣告的語法,讀取annotation的API,一個使用ann

java 註解(Annotation)

從 JDK 5.0 開始, Java 增加了對元資料(MetaData) 的支援, 也就是 Annotation(註解)。 Annotation 其實就是程式碼裡的特殊標記, 這些標記可

java提高】(16)---java註解(Annotation)

java提高(16)---java註解 註解含義註解是JDK1.5之後才有的新特性,它相當於一種標記,在程式中加入註解就等於為程式打上某種標記,之後又通過類的反射機制來解析註解。 一、JDK自帶註解 JDK1.5之後內部提供的三個註解 @Deprecated #廢棄,過時。 @Overri

深入JAVA註解-Annotation(學習過程)

JAVA註解-Annotation學習 本文目的:專案開發過程中遇到自定義註解,想要弄清楚其原理,但是自己的基礎知識不足以支撐自己去探索此問題,所以先記錄問題,然後補充基礎知識,然後解決其問題。記錄此學習過程。 專案中遇到的註解: //使用註解的地方 @ServiceScan({"com.sin

深入學習JAVA註解-Annotation(學習過程)

# JAVA註解-Annotation學習 > 本文目的:專案開發過程中遇到自定義註解,想要弄清楚其原理,但是自己的基礎知識不足以支撐自己去探索此問題,所以先記錄問題,然後補充基礎知識,然後解決其問題。記錄此學習過程。 ## 專案中遇到的註解: ``` //使用註解的地方 @ServiceScan({"co

秒懂,Java 註解Annotation)你可以這樣學

face 幹什麽 有一種 博客 作用 習慣 lis 如果 手機 這處圖片引自老羅的博客。為了避免不必要的麻煩,首先聲明我個人比較尊敬老羅的。至於為什麽放這張圖,自然是為本篇博文服務,接下來我自會說明。好了,可以開始今天的博文了。 Annotation 中文譯過來就是註解、

Java 註解Annotation

null lambda roi 實例 cut exce runt 比較 符號 Java 註解用於為 Java 代碼提供元數據。作為元數據,註解不直接影響你的代碼執行,但也有一些類型的註解實際上可以用於這一目的。Java 註解是從 Java5 開始添加到 Java 的。

秒懂Java 註解Annotation

能夠 extend tty 來講 hub 開頭 arrays term con 文章開頭先引入一處圖片。 這處圖片引自老羅的博客。為了避免不必要的麻煩,首先聲明我個人比較尊敬老羅的。至於為什麽放這張圖,自然是為本篇博文服務,接下來我自會說明。好了,可以開始今天的博文了。 A

Java 基礎之--註解Annotation詳解

註解 java 基礎 time span face 自定義註解 div ace rtu 自定義註解入門: public @interface Annotation01 { //set default value ""; String value() de

java註解Annotation)總結

java註解(Annotation)總結 吐糟時間 註解是什麼 註解有什麼用 註解的分類 怎麼自定義註解 新增屬性 註解的使用 解析執行時(RUNTIME)註解 解析編譯時(CLASS)註解

Java註解(Annotation)

  1.Annotation為何而來 What:Annotation幹嘛的 JDK5開始,java增加了對元資料(MetaData)的支援,怎麼支援?答:通過Annotation(註解)來實現。Annotation提供了為程式元素設定元資料的方法。元資料:描述資料的資料

Java註解型別(@Annotation)

註解格式 @Retention(RUNTIME) @Target({ TYPE, FIELD, METHOD }) public @interface LinAnnotation { } 註解類不能被繼承(反編譯註解類的時候,發現註解類繼承Annotation類,java不支援多繼承)。

Java 註解Annotation)淺入深出

Java 註解 (Annotation)淺入深出 本文主要參考與借鑑frank909 文章,但更為簡單,詳細。 Annotation 中文譯過來就是註解、標釋的意思。Annotation是一種應用於類、方法、引數、變數、構造器及包宣告中的特殊修飾符。它是一種由JSR-175標準選擇用來描述元資料的一種工具

Java 註解Annotation) 的基本使用和理解

1.註解 概念:相當於標籤 2.註解的型別 2.1 元註解 概念:元註解是可以註解到註解上的註解,或者說元註解是一種基本註解,但是它能夠應用到其它的註解上面 元註解的種類 @Retention @Documented @Target @Inherited

Java註解Annotation)學習總結

註解的定義 註解通過 @interface 關鍵字進行定義。 public @interface TestAnnotation { } 它的形式跟介面很類似,不過前面多了一個 @ 符號。上面的程式碼就建立了一個名字為 TestAnnotaion 的註解。你可以簡

Java——註解Annotation

註解(Annotation) JDK提供的三個內建註解:@Override、@Deprecated、@SuppressWarnings 1.準確覆寫@Override 檢查當前類中的覆寫方法與父類中定義的同名方法是否相同,如果有任何一個地方不同,編譯報錯 2.過期處理