1. 程式人生 > >Java8新特性——可重複註解

Java8新特性——可重複註解

    今天是高考的日子,是大四師兄師姐答辯畢業的日子。一代又來,一代又去。好久沒寫部落格,藉此特殊日子整理一下前不久學java8新特性時寫的程式碼,留下痕跡。(本部落格的程式碼根據 學習整理,加上個人的理解而成,關於某個新特性的介紹程式碼裡的註釋已經闡述清楚,故不再寫文字介紹,直接看程式碼吧!)

    本篇介紹java8的新特性之一:可重複註解。    

import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Target;

/**
 * Java8中的Annotations是可重複。
 */
public class RepeatableAnnotation {
	public static void main(String[] args) {
		//雖然我們從來沒有在類Chinese上宣告@Hints註解,但該資訊還是可以通過getAnnotation(Hint.class)獲得。
		Hint hint = Chinese.class.getAnnotation(Hint.class);
		System.err.println(hint);
		
		//java編譯器隱式的在該註解使用中加入@Hints。這種後期處理在通過反射獲取註解是十分重要的。
		Hints hints = Chinese.class.getAnnotation(Hints.class);
		System.err.println(hints.value().length);
		Hint[] arr = hints.value();
		for(Hint h : arr){
			System.err.println(h);
		}
		
		//getAnnotationsByType是一種更加便利的方法,它可以保證我們訪問所有使用的@Hint註解。
		Hint[] hints2 = Chinese.class.getAnnotationsByType(Hint.class);
		System.err.println(hints2.length);
	}
}

@Repeatable(Hints.class)
@interface Hint{
	String value();
}

@interface Hints{
	Hint[] value();
}

//使用容器註解
@Hints({@Hint("hint1"),@Hint("hint2")})
class Person{
}

//使用可重複註解
//java編譯器隱式的在該註解使用中加入@Hints。這種後期處理在通過反射獲取註解是十分重要的。
@Hint("hint1")
@Hint("hint2")
class Chinese{
}

//Java8中註解的使用範圍擴充套件到兩種新的型別:TYPE_PARAMETER(Type parameter declaration),TYPE_USE(Use of a type)
@Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})  
@interface MyAnnotation {}  
  

相關推薦

Java8特性——重複註解

    今天是高考的日子,是大四師兄師姐答辯畢業的日子。一代又來,一代又去。好久沒寫部落格,藉此特殊日子整理一下前不久學java8新特性時寫的程式碼,留下痕跡。(本部落格的程式碼根據 學習整理,加上個

Java8特性重複註解與型別註解,你真的學會了嗎?

## 寫在前面 > 在Java8之前,在某個類或者方法,欄位或者引數上標註註解時,同一個註解只能標註一次。但是在Java8中,新增了重複註解和型別註解,也就是說,從Java8開始,支援在某個類或者方法,欄位或者引數上標註多個相同的註解。那麼,有讀者就會問了:如何實現呢?別急,往下看!文中不只是Java

Java8中的重複註解@Repeatable和繼承標記註解@Inherited組合使用注意細節

被標記@Inherited註解的註解,子類可以繼承該註解, 註解繼承規則:       1 類註解會被繼承,子類有相同註解將覆蓋父類註解,其他父類註解仍然繼承       2 子類從寫方法,方法註解不會被繼承     &

Java8特性 重復註解與類型註解

get 特性 inter method nbsp code ace color tty import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java

Java8 特性之四---------重複註解註解應用拓寬

自從Java 5中引入註解以來,這個特性開始變得非常流行,並在各個框架和專案中被廣泛使用。不過,註解有一個很大的限制是:在同一個地方不能多次使用同一個註解。Java 8打破了這個限制,引入了重複註解的概念,允許在同一個地方多次使用同一個註解。 在Java 8中

java8特性--拓寬註解的應用場景

Java 8拓寬了註解的應用場景。現在,註解幾乎可以使用在任何元素上:區域性變數、介面型別、超類和介面實現類,甚至可以用在函式的異常定義上。下面是一些例子: package com.javacodegeeks.java8.annotations; impor

樂字節-Java8特性之Base64和重復註解與類型註解

ref sin pre easy 處理 on() append 靈活 rfc 上一篇小樂給大家說了《樂字節-Java8新特性之Date API》,接下來小樂繼續給大家說一說Java8新特性之Base64和重復註解與類型註解。 一、Base64 在Java 8中,內

Java8特性——lambda表達式.(案例:詞頻統計)

word ont lose args list lower cep stream spa 需求:讀入一個文本文件,確定所有單詞的使用頻率並從高到低排序,打印出所有單詞及其頻率的排序列表 先用傳統方法解: 1 package cn._1.wordfrequency; 2

Java8特性——lambda表達式.(案例:完全數分類)

完全 boolean lte arraylist efi def oid 輸入 class 需求:輸入一個數,判斷其類型(完全數,過剩數,不足數) 完全數:自身之外所有因數和==自身 過剩數:自身之外所有因數和>自身 不足數:自身之外所有因數和<自身 1 p

Java8 特性

too opera down font splay eas array display tac 1.接口改善   a.接口中可以定義靜態方法   b.更重要的是,接口中的方法,可以用default修飾後,添加方法體 2.為什麽不能用默認方法來重寫equals,hashcod

Java8特性之Optional

.get value api new java代碼 optional padding 正常 line 空指針異常一直是困擾Java程序員的問題,也是我們必須要考慮的。當業務代碼中充滿了if else判斷null 的時候程序變得不再優雅,在Java8中提供了Optional類

Java精品高級課,架構課,java8特性,P2P金融項目,程序設計,功能設計,數據庫設計,第三方支付,web安全,視頻教程

數據庫設計 zfs 調優 pex 完整版 city 後臺 中間件 集群 36套精品Java架構師,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,項目實戰,P2P金融項目,大型分布式電商實戰視頻教程 視頻課程包含: 高級Java架構師包含:Sp

Java8特性

java編程 function ats 編碼解碼 sof 企業 void lar 通過 前言: Java 8 已經發布很久了,很多報道表明Java 8 是一次重大的版本升級。在Java Code Geeks上已經有很多介紹Java 8新特性的文章,例如Playing wit

java7和java8特性

iot use 允許 臨時 default line array 關鍵字 font 以下來至網址: http://blog.csdn.net/samjustin1/article/details/52268004 Java7 新特性 1.switch中可以使用字符串了

java8特性-方法引用

show acc 函數式 類名 抽象方法 bip pub 構造 -- 方法引用:若 Lambda 體中的功能,已經有方法提供了實現,可以使用方法引用 (可以將方法引用理解為 Lambda 表達式的另外一種表現形式) 1. 對象的引用 :: 實例方法名2. 類

java8特性-Stream

mat color img reac def list collect array java8 Java8中的Collection接口被擴展,提供了兩個獲取流的方法: default Stream<E>

Java8特性:接口的默認方法與接口的靜態方法

err 類比 urn 多態 class 數組保存 統一 body bstr 接口的定義 接口的作用是定義該類型的實例要具有的功能,也就是必須執行哪些工作,並且不需要關心這些工作是怎麽具體進行的。接口定義的方法沒有方法體,並且接口不允許定義實例變量。如果一個類實現了這個接口就

java8特性學習:stream與lambda

包含 term strong java statistic 管道 特定 getname java8新特性 Streams api 對 Stream 的使用就是實現一個 filter-map-reduce 過程,產生一個最終結果,或者導致一個副作用(side effect)

36套精品Java高級課,架構課,java8新特性,P2P金融項目,程序設計,功能設計,數據庫設計,第三方支付,web安全,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,項目實戰,大型分布式電商項目實戰視頻教程

java cti 投資 調優 dubbo pac 性能 -s clas 36套精品Java高級課,架構課,java8新特性,P2P金融項目,程序設計,功能設計,數據庫設計,第三方支付,web安全,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,項

Java8特性概覽

框架 空指針 定義 申請 ash java程序 .cn 問題 http Java8新特性簡介 a)速度更快   1.對於JVM內存模型的新定義,將方法區從堆內存中移除,以前HotSpot JVM堆內存分為三塊:1.年輕代 2.年老代 3.持久代(即方法區),點擊回顧