SlideShare a Scribd company logo
Submit Search
Upload
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
10 likes
•
2,773 views
1
of
84
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
•
10 likes
•
2,773 views
Report
Share
Download Now
Download to read offline
Technology
進階自訂泛型 進階自訂列舉 使用標準標註 自訂與讀取標註
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
2.2K views
•
80 slides
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 by
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
2.5K views
•
78 slides
Java SE 7 技術手冊投影片第 04 章 - 認識物件 by
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
3.2K views
•
91 slides
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出 by
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
2.2K views
•
48 slides
Java SE 8 技術手冊第 15 章 - 通用API by
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
2.2K views
•
82 slides
Java SE 7 技術手冊投影片第 12 章 - 通用API by
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
2.2K views
•
126 slides
More Related Content
What's hot
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器 by
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
1.9K views
•
48 slides
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API by
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
3.1K views
•
129 slides
Java SE 7 技術手冊投影片第 07 章 - 介面與多型 by
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
Justin Lin
2.1K views
•
66 slides
Java SE 7 技術手冊投影片第 03 章 - 基礎語法 by
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
3.5K views
•
52 slides
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
2.6K views
•
75 slides
Java SE 8 技術手冊第 3 章 - 基礎語法 by
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
5.3K views
•
52 slides
What's hot
(20)
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器 by Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
•
1.9K views
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API by Justin Lin
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
•
3.1K views
Java SE 7 技術手冊投影片第 07 章 - 介面與多型 by Justin Lin
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
Justin Lin
•
2.1K views
Java SE 7 技術手冊投影片第 03 章 - 基礎語法 by Justin Lin
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
•
3.5K views
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by Justin Lin
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
•
2.6K views
Java SE 8 技術手冊第 3 章 - 基礎語法 by Justin Lin
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
•
5.3K views
Java SE 8 技術手冊第 11 章 - 執行緒與並行API by Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
•
3.7K views
Java SE 8 技術手冊第 4 章 - 認識物件 by Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
•
4.2K views
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計 by Justin Lin
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Justin Lin
•
2.4K views
Java SE 8 技術手冊第 2 章 - 從JDK到IDE by Justin Lin
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
•
5.3K views
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫 by Justin Lin
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
•
2.1K views
Java SE 8 技術手冊第 10 章 - 輸入輸出 by Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
•
2.6K views
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2 by Justin Lin
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
•
5.6K views
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE by Justin Lin
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
•
3.6K views
從模組到類別 by Justin Lin
從模組到類別
Justin Lin
•
1.7K views
Java SE 8 技術手冊第 16 章 - 整合資料庫 by Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
•
2.9K views
Java SE 7 技術手冊投影片第 09 章 - Collection與Map by Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
•
2.5K views
2, object oriented programming by ted-xu
2, object oriented programming
ted-xu
•
290 views
自訂泛型、列舉與標註 by Justin Lin
自訂泛型、列舉與標註
Justin Lin
•
633 views
Java Tutorial:Learn Java in 06:00:00 by Justin Lin
Java Tutorial:Learn Java in 06:00:00
Justin Lin
•
27.5K views
Viewers also liked
Java SE 8 技術手冊第 1 章 - Java平台概論 by
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
11.6K views
•
44 slides
Java SE 8 技術手冊第 17 章 - 反射與類別載入器 by
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
2.3K views
•
50 slides
Java SE 8 技術手冊第 13 章 - 時間與日期 by
Java SE 8 技術手冊第 13 章 - 時間與日期
Justin Lin
3.4K views
•
39 slides
Java SE 8 技術手冊第 7 章 - 介面與多型 by
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
2.7K views
•
67 slides
Java SE 8 技術手冊第 8 章 - 例外處理 by
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
3.2K views
•
70 slides
Java SE 8 技術手冊第 6 章 - 繼承與多型 by
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
3.5K views
•
78 slides
Viewers also liked
(20)
Java SE 8 技術手冊第 1 章 - Java平台概論 by Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
•
11.6K views
Java SE 8 技術手冊第 17 章 - 反射與類別載入器 by Justin Lin
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
•
2.3K views
Java SE 8 技術手冊第 13 章 - 時間與日期 by Justin Lin
Java SE 8 技術手冊第 13 章 - 時間與日期
Justin Lin
•
3.4K views
Java SE 8 技術手冊第 7 章 - 介面與多型 by Justin Lin
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
•
2.7K views
Java SE 8 技術手冊第 8 章 - 例外處理 by Justin Lin
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
•
3.2K views
Java SE 8 技術手冊第 6 章 - 繼承與多型 by Justin Lin
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
•
3.5K views
Java SE 8 技術手冊第 9 章 - Collection與Map by Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
•
4.9K views
從 REPL 到 IDE by Justin Lin
從 REPL 到 IDE
Justin Lin
•
2.3K views
進階主題 by Justin Lin
進階主題
Justin Lin
•
3K views
3D 之邏輯與美感交會 - OpenSCAD by Justin Lin
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
•
1.4K views
Java SE 7 技術手冊試讀 - Java 平台概論 by Justin Lin
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
•
5.5K views
JDK8 Functional API by Justin Lin
JDK8 Functional API
Justin Lin
•
18.7K views
淺談 Groovy 與 Gradle by Justin Lin
淺談 Groovy 與 Gradle
Justin Lin
•
8.4K views
Java Web 程式之效能技巧與安全防護 by Justin Lin
Java Web 程式之效能技巧與安全防護
Justin Lin
•
2.6K views
Java 8 與 retrolambda by Justin Lin
Java 8 與 retrolambda
Justin Lin
•
5K views
常用內建模組 by Justin Lin
常用內建模組
Justin Lin
•
1.4K views
資料結構 by Justin Lin
資料結構
Justin Lin
•
1.8K views
除錯、測試與效能 by Justin Lin
除錯、測試與效能
Justin Lin
•
1.7K views
類別的繼承 by Justin Lin
類別的繼承
Justin Lin
•
1.4K views
java8-patterns by Justin Lin
java8-patterns
Justin Lin
•
15.3K views
Similar to Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註 by
CH18:自訂泛型、列舉與標註
Justin Lin
359 views
•
94 slides
3. java basics by
3. java basics
netdbncku
735 views
•
45 slides
模块一-Go语言特性.pdf by
模块一-Go语言特性.pdf
czzz1
22 views
•
78 slides
Refactoring with Patterns in PHP by
Refactoring with Patterns in PHP
Jace Ju
3.8K views
•
32 slides
Java面试知识 by
Java面试知识
yiditushe
562 views
•
44 slides
Notes of jcip by
Notes of jcip
Dai Jun
2K views
•
134 slides
Similar to Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
(20)
CH18:自訂泛型、列舉與標註 by Justin Lin
CH18:自訂泛型、列舉與標註
Justin Lin
•
359 views
3. java basics by netdbncku
3. java basics
netdbncku
•
735 views
模块一-Go语言特性.pdf by czzz1
模块一-Go语言特性.pdf
czzz1
•
22 views
Refactoring with Patterns in PHP by Jace Ju
Refactoring with Patterns in PHP
Jace Ju
•
3.8K views
Java面试知识 by yiditushe
Java面试知识
yiditushe
•
562 views
Notes of jcip by Dai Jun
Notes of jcip
Dai Jun
•
2K views
[圣思园][Java SE]Io 3 by ArBing Xie
[圣思园][Java SE]Io 3
ArBing Xie
•
284 views
IOS入门分享 by zenyuhao
IOS入门分享
zenyuhao
•
934 views
Clojure简介与应用 by Robert Hao
Clojure简介与应用
Robert Hao
•
1.5K views
构建可维护的Javascript 小米网 by yang alex
构建可维护的Javascript 小米网
yang alex
•
1.8K views
Foundation of software development 2 by netdbncku
Foundation of software development 2
netdbncku
•
379 views
软件工程 第七章 by 浒 刘
软件工程 第七章
浒 刘
•
520 views
Clipper@datacon.2019.tw by Wei-Yu Chen
Clipper@datacon.2019.tw
Wei-Yu Chen
•
108 views
Java 網路程式 by PingLun Liao
Java 網路程式
PingLun Liao
•
836 views
Ecmascript by jay li
Ecmascript
jay li
•
7.5K views
SCJP ch09 by r82093403
SCJP ch09
r82093403
•
292 views
2. java introduction by netdbncku
2. java introduction
netdbncku
•
1.4K views
使用Eclipse自定义扩展点 by tangyouhua
使用Eclipse自定义扩展点
tangyouhua
•
738 views
SCJP ch02 by r82093403
SCJP ch02
r82093403
•
312 views
TQC+ 程式語言 Python 05:函式 by neochen2701
TQC+ 程式語言 Python 05:函式
neochen2701
•
1.3K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
2.
自訂泛型、列舉與標註 學習目標 • 進階自訂泛型 • 進階自訂列舉 •
使用標準標註 • 自訂與讀取標註
3.
使用 extends 與
? • 在定義泛型時,可以定義型態的邊界
5.
使用 extends 與
? • 可以如下使用 quick() 方法:
6.
使用 extends 與
? • 若 extends 之後指定了類別或介面後,想 再指定其它介面,可以使用 & 連接
7.
使用 extends 與
? • 來看看在泛型中的型態通配字元 ?
8.
使用 extends 與
?
9.
使用 extends 與
? • 如果有以下程式片段,則會發生編譯錯誤: • Node<Apple> 是一種 Node<Fruit> ?嗎
10.
使用 extends 與
? • 如果 B 是 A 的子類別,而 Node<B> 可視為 一種 Node<A> ,則稱 Node 具有共變性 ( Covariance )或有彈性的( flexible ) • Java 的泛型並不具有共變性,不過可以使用 型態通配字元 ? 與 extends 來宣告變數, 使其達到類似共變性
11.
使用 extends 與
?
12.
使用 extends 與
? • 若宣告 ? 不搭配 extends ,則預設為 ? extends Object • 這與宣告為 Node<Object> 不同,如果 node 宣告為 Node<Object> ,那就真的只 能參考至 Node<Object> 實例了
13.
使用 extends 與
? • 以下會編譯錯誤: • 以下會編譯成功:
14.
使用 extends 與
? • 使用通配字元 ? 與 extends 限制 T 的型態 ,就只能透過 T 宣告的名稱取得物件指定給 Object ,或將 T 宣告的名稱指定為 null ,除此之外不能進行其它指定動作
15.
使用 extends 與
? • Java 的泛型語法只用在編譯時期檢 ,執行查 時期的型態資訊都是未知 – 也就是執行時期實際上只會知道是 Object 型態 (又稱為型態抹除) • 由於無法在執行時期獲得型態資訊,編譯器 只能就編譯時期看到的型態來作檢查
16.
使用 super 與
? • 如果 B 是 A 的子類別,如果 Node<A> 視為 一種 Node<B> ,則稱 Node 具有逆變性 ( Contravariance ) • Java 泛型並不支援逆變性
17.
使用 super 與
? • 可以使用型態通配字元 ? 與 super 來宣告, 以達到類似逆變性的效果
18.
使用 super 與
? • 你想設計了一個籃子,可以指定籃中置放的 物品,放置的物品會是同一種類(例如都是 一種 Fruit ) • 有一個排序方法,可指定 java.util.Comparator 針對籃中物品進 行排序…
19.
使用 super 與
? • 以下泛型未填寫部份該如何宣告?
20.
使用 super 與
? • 宣告為 <? extends T> ?嗎
21.
使用 super 與
? • 你希望可以有以下的操作:
22.
使用 super 與
? • 應該宣告為 <? super T>
23.
自訂列舉 • 在 7.2.3
中曾經簡介過列舉型態,請先瞭解該 節內容 …
24.
瞭解 java.lang.Enum 類別 •
在 7.2.3 節中使用 enum 定義過以下的 Action 列舉型態:
25.
瞭解 java.lang.Enum 類別 •
enum 定義了特殊的類別,繼承自 java.lang.Enum
26.
瞭解 java.lang.Enum 類別
27.
瞭解 java.lang.Enum 類別 •
7.2.3 中 Action.class 反編譯後的內容 … .
29.
瞭解 java.lang.Enum 類別 •
可以透過 Enum 定義的 name() 方法取得列 舉成員名稱字串,這適用於需要使用字串代 表列舉 的場合,相當於值 toString() 的作 用,事實上 toString() 也只是傳回 name 成員的值 • 可透過 ordinal() 取得列舉 int ,這適值 用於需要使用 int 代表列舉 的場合值
30.
瞭解 java.lang.Enum 類別 •
例如 7.2.1 的 Game 類別,可以如下操作
31.
瞭解 java.lang.Enum 類別 •
Enum 的 valueOf() 方法,可以傳入字串與 Enum 實例,它會傳回對應的列舉實例 • 通常會透過 Enum 子類別的 valueOf() 方 法,其內部就使用了 Enum.valueOf() (可觀察先前反編譯 Action 列舉的程式 碼)
32.
瞭解 java.lang.Enum 類別 •
Enum 的 equals() 與 hashCode() 基本上 繼承了 Object 的行為,但被標示為 final :
33.
進階 enum 運用 •
values() 方法會將內部維護 Action 列舉 實例的陣列複製後傳回 • 由於是複製品,因此改變傳回的陣列,並不 會影響 Action 內部所維護的陣列
34.
進階 enum 運用 •
可以自行定義建構式,條件是不得為公開 ( public )建構式,也不可以於建構式中 呼叫 super()
35.
進階 enum 運用 •
例如原本有個 interface 定義的列舉常數 :
36.
進階 enum 運用
38.
進階 enum 運用 •
定義列舉時還可以實作介面,例如有個介面 定義如下:
39.
進階 enum 運用
40.
進階 enum 運用 •
可以如下執行程式:
41.
進階 enum 運用 •
定義 enum 時有個特定 類別本體(值 Value- Specific Class Bodies )語法
42.
進階 enum 運用
43.
進階 enum 運用 •
實際上,編譯器會將 Action3 標示為抽象 類別: • 並為每個列舉成員後的 {} 語法,產生匿名 內部類別,這個匿名內部類別繼承了 Action3 ,實作了 execute() 方法 …
44.
進階 enum 運用
45.
進階 enum 運用 •
以先前 Priority 為例,可改寫為以下:
46.
進階 enum 運用
47.
常用標準標註
48.
常用標準標註 • 如果某個方法原先存在於 API
中,後來不建 議再使用,可於該方法上標註 @Deprecated
49.
常用標準標註 • 若有使用者後續又想呼叫或重新定義這個方 法,編譯器會提出警訊 ..
50.
常用標準標註 • 在 JDK5
之後加入泛型支援,對於支援泛型 的 API ,建議明確指定泛型真正型態,如果 沒有指定的話,編譯器會提出警訊
51.
常用標準標註 • 如果不想看到這個警訊,可以使用 @SuppressWarnings 指定抑制
unckecked 的警訊產生:
52.
常用標準標註 • @SuppressWarnings 的
value 可以指定 要抑制的警訊種類。例如你真的想呼叫 @Deprecated 標示過的方法,又不想看到 警訊,可以如下: • 也可以一次指定抑制多項警訊:
53.
常用標準標註 • 有沒有可能建立 List<String>[]
陣列實 例?答案是不行! • 宣告 List<String>[] lists 是可以的, 只是實際上不會有人這麼做 • 可以宣告 List<String>[] lists 是為了 支援可變長度引數
54.
常用標準標註 • 在 JDK6
中這個程式碼可以順利編譯,也不 會有任何警訊 • 如果你這麼使用:
55.
常用標準標註 • Java 泛型語法是提供編譯器資訊,使其可在 編譯時期檢
型態錯誤查 • 編譯器只能就 List<String> 的型態資訊 ,在編譯時期幫你檢 呼叫查 doSome() 時, 傳入的 list1 與 list2 是否為 List<String> 型態
56.
常用標準標註 • 設計 doSome()
的人在實作流程時,是有可 能發生編譯器無法檢 出來的執行時期型態查 錯誤 • 這類問題稱為 Heap pollution
57.
常用標準標註 • 即使編譯器提醒身為 doSome()
的客戶端可 能會有這類問題發生又如何? • 在 JDK7 中,同樣的 Util 類別編譯時,會 發生以下警訊:
58.
常用標準標註 • 如果開發人員確定避免了這個問題,則可以 使用 @SafeVarargs
加以標註
59.
常用標準標註 • 如下呼叫 Util.doSome()
不會再發生警訊
60.
自訂標註型態 • 所有標註型態其實都是 java.lang.annotation.Annotation 子介面 – @Override
型態 java.lang.Override – @Deprecated 型態 java.lang.Deprecated – …
61.
自訂標註型態 • 要定義一個標註可以使用 @interface
62.
自訂標註型態 • 設定單 標註(值
Single-value Annotation )
63.
自訂標註型態 • 標註屬性也可以用陣列形式指定
64.
自訂標註型態 • 在定義標註屬性時,如果屬性名稱為 value ,則可以省略屬性名稱,直接指定值 •
這個標註可以使用 @Ignore(value = "message") 指定,也可以使用 @Ignore("message") 指定
65.
自訂標註型態 • 以下這個標註: • 可以使用
@TestClass(value = {Some.class, Other.class}) 指定, 也可以使用 @TestClass({Some.class, Other.class}) 指定
66.
自訂標註型態 • 使用 default
關鍵字可以對成員設定預設 值
67.
自訂標註型態 • 如果是 Class
設定的屬性比較特別,必須自 訂一個類別作為預設值
68.
自訂標註型態 • 如果要設定陣列預設 的話,可以在值 default
之後加上 {}
69.
自訂標註型態 • 可使用 java.lang.annotation.Target 限定標註使用位置,限定時可指定 java.lang.annotation.ElementType 的列舉值
70.
自訂標註型態 • 想將 @Test8
限定只能用於方法:
71.
自訂標註型態 • 想要將標註資料加入文件,可以使用 java.lang.annotation.Documented
72.
自訂標註型態 • 在定義標註時設定 java.lang.annotation.Inherited 標 註,就可以讓標註被子類別繼承
73.
JDK8 標註 強增 •
在 JDK8 出現之前, ElementType 的列舉 成員,是用來限定 個宣告位置可以進行標哪 註 • JDK8 的 ElementType 多了兩個列舉成員 TYPE_PARAMETER 、 TYPE_USE ,它們是 用來限定 個型態可以進行標註哪
74.
JDK8 標註 強增 •
在定義 @Email 時,必須在 @Target 設定 ElementType.TYPE_PARAMETER ,表示 這個標註可用來標註型態參數
75.
JDK8 標註 強增 •
一個標註如果被設定為 ElementType.TYPE_USE ,只要是型態名 稱,都可以進行標註
76.
JDK8 標註 強增 •
以下幾個標註範例都是可以的: • 以下的標註就不合法:
77.
JDK8 標註 強增 •
這可以讓你如下進行標註:
78.
JDK8 標註 強增 •
JDK8 新增了個 @Repeatable
79.
執行時期讀取標註資訊 • 如果希望於執行時期讀取標註資訊,可以於 自訂標註時使用 java.lang.annotation.Retention 搭 配 java.lang.annotation.RetentionPo licy
列舉指定…
80.
執行時期讀取標註資訊 • 可使用 java.lang.reflect.AnnotatedElement
介面 實作物件取得標註資訊
81.
執行時期讀取標註資訊 • Class 、
Constructor 、 Field 、 Meth od 、 Package 等類別,都實作了 AnnotatedElement 介面 • 如果標註在定義時的 RetentionPolicy 指定為 RUNTIME ,就可以用 Class 、 Constructor 、 Field 、 Meth od 、 Package 等類別的實例,取得設定的 標註資訊
82.
執行時期讀取標註資訊
84.
執行時期讀取標註資訊 • JDK8 新增了 getDeclaredAnnotation()
、 getDecl aredAnnotationsByType() 、 getAnno tationsByType()