SlideShare a Scribd company logo
1 of 80
Download to read offline
CHAPTER 16
• 自訂泛型、列舉與標註
               學習目標
               •   進階自訂泛型
               •   進階自訂列舉
               •   使用標準標註
               •   自訂與讀取標註
自訂泛型
• 在9.1.7中曾經簡介過基本的泛型語法,請你
  在繼續之前,先複習一下該節內容…
定義泛型方法
• 15.1.5中定義過BeanUtil.getBean()方法

• 泛型也可以僅定義在方法上
定義泛型方法
• 可以如下使用:




• 簡化語法:
定義泛型方法
• 完整語法是想在鏈狀操作時使用:
使用extends與?
• 在定義泛型時,可以定義型態的邊界
使用extends與?
• 可以如下使用quick()方法:
使用extends與?
• 若extends之後指定了類別或介面後,想再
  指定其它介面,可以使用&連接
使用extends與?
• 來看看在泛型中的型態通配字元?
使用extends與?
使用extends與?
• 如果有以下程式片段,則會發生編譯錯誤:



• Node<Apple>是一種Node<Fruit>嗎?
使用extends與?
• 如果B是A的子類別,而Node<B>可視為一種
  Node<A>,則稱Node具有共變性
  (Covariance)或有彈性的(flexible)
• Java的泛型並不具有共變性,不過可以使用
  型態通配字元?與extends來宣告變數,使
  其達到類似共變性
使用extends與?
使用extends與?
• 若宣告?不搭配extends,則預設為?
  extends Object

• 這與宣告為Node<Object>不同,如果
  node宣告為Node<Object>,那就真的只
  能參考至Node<Object>實例了
使用extends與?
• 以下會編譯錯誤:

• 以下會編譯成功:
使用extends與?
• 使用通配字元?與extends限制T的型態,就
  只能透過T宣告的名稱取得物件指定給
  Object,或將T宣告的名稱指定為null,
  除此之外不能進行其它指定動作
使用extends與?
• Java的泛型語法只用在編譯時期檢查,執行
  時期的型態資訊都是未知
 – 也就是執行時期實際上只會知道是Object型態
   (又稱為型態抹除)
• 由於無法在執行時期獲得型態資訊,編譯器
  只能就編譯時期看到的型態來作檢查
使用super與?
• 如果B是A的子類別,如果Node<A>視為一種
  Node<B>,則稱Node具有逆變性
  (Contravariance)
• Java泛型並不支援逆變性
使用super與?
• 可以使用型態通配字元?與super來宣告,以
  達到類似逆變性的效果
使用super與?
• 你想設計了一個籃子,可以指定籃中置放的
  物品,放置的物品會是同一種類(例如都是
  一種Fruit)
• 有一個排序方法,可指定
  java.util.Comparator針對籃中物品進
  行排序…
使用super與?
• 以下泛型未填寫部份該如何宣告?
使用super與?
• 宣告為<? extends T>嗎?
使用super與?
• 你希望可以有以下的操作:
使用super與?
• 應該宣告為<? super T>
自訂列舉
• 在7.2.3中曾經簡介過列舉型態,請先瞭解該
  節內容 …
瞭解java.lang.Enum類別
• 在7.2.3節中使用enum定義過以下的Action
  列舉型態:
瞭解java.lang.Enum類別
• enum定義了特殊的類別,繼承自
  java.lang.Enum
瞭解java.lang.Enum類別
瞭解java.lang.Enum類別
• 7.2.3中 Action.class反編譯後的內容 ….
瞭解java.lang.Enum類別
• 可以透過Enum定義的name()方法取得列舉
  成員名稱字串,這適用於需要使用字串代表
  列舉值的場合,相當於toString()的作用,
  事實上toString()也只是傳回name成員的
  值
• 可透過ordinal()取得列舉int值,這適用
  於需要使用int代表列舉值的場合
瞭解java.lang.Enum類別
• 例如7.2.1的Game類別,可以如下操作
瞭解java.lang.Enum類別
• Enum的valueOf()方法,可以傳入字串與
  Enum實例,它會傳回對應的列舉實例



• 通常會透過Enum子類別的valueOf()方法,
  其內部就使用了Enum.valueOf()(可觀察
  先前反編譯Action列舉的程式碼)
瞭解java.lang.Enum類別
• Enum的equals()與hashCode()基本上繼
  承了Object的行為,但被標示為final:
進階enum運用
• values()方法會將內部維護Action列舉實
  例的陣列複製後傳回
• 由於是複製品,因此改變傳回的陣列,並不
  會影響Action內部所維護的陣列
進階enum運用
• 可以自行定義建構式,條件是不得為公開
  (public)建構式,也不可以於建構式中呼
  叫super()
進階enum運用
• 例如原本有個interface定義的列舉常數:
進階enum運用
進階enum運用
• 定義列舉時還可以實作介面,例如有個介面
  定義如下:
進階enum運用
進階enum運用
• 可以如下執行程式:
進階enum運用
• 定義enum時有個特定值類別本體(Value-
  Specific Class Bodies)語法
進階enum運用
進階enum運用
• 實際上,編譯器會將Action3標示為抽象類
  別:



• 並為每個列舉成員後的{}語法,產生匿名內
  部類別,這個匿名內部類別繼承了Action3,
  實作了execute()方法 …
進階enum運用
進階enum運用
• 以先前Priority為例,可改寫為以下:
進階enum運用
常用標準標註
常用標準標註
• 如果某個方法原先存在於API中,後來不建議
  再使用,可於該方法上標註@Deprecated
常用標準標註
• 若有使用者後續又想呼叫或重新定義這個方
  法,編譯器會提出警訊 ..
常用標準標註
• 在JDK5之後加入泛型支援,對於支援泛型的
  API,建議明確指定泛型真正型態,如果沒有
  指定的話,編譯器會提出警訊
常用標準標註
• 如果不想看到這個警訊,可以使用
  @SuppressWarnings指定抑制unckecked的
  警訊產生:
常用標準標註
• @SuppressWarnings 的value可以指定
  要抑制的警訊種類。例如你真的想呼叫
  @Deprecated標示過的方法,又不想看到
  警訊,可以如下:

• 也可以一次指定抑制多項警訊:
常用標準標註
• 在JDK6中這個程式碼可以順利編譯,也不會
  有任何警訊:




• 這個程式碼可以順利編譯,沒有任何警訊 :
常用標準標註
• 如果你這麼使用:
常用標準標註
• 在JDK7中,同樣的Util類別編譯時,會發
  生以下警訊:
常用標準標註
• heap pollution問題是指執行時期無法具體確
  認(reified)引數型態(參數實際參考的物件
  型態)
• 如果開發人員確定避免了這個問題,則可以
  使用@SafeVarargs加以標註
常用標準標註
• 如下呼叫Util.doSome()不會發生警訊:
自訂標註型態
• 所有標註型態其實都是
  java.lang.annotation.Annotation
  子介面
 – @Override型態java.lang.Override
 – @Deprecated型態java.lang.Deprecated
 –…
自訂標註型態
• 要定義一個標註可以使用@interface
自訂標註型態
• 設定單值標註(Single-value Annotation)
自訂標註型態
• 標註屬性也可以用陣列形式指定
自訂標註型態
• 在定義標註屬性時,如果屬性名稱為value,
  則可以省略屬性名稱,直接指定值



• 這個標註可以使用@Ignore(value =
  "message")指定,也可以使用
  @Ignore("message")指定
自訂標註型態
• 以下這個標註:



• 可以使用@TestClass(value =
  {Some.class, Other.class})指定,
  也可以使用@TestClass({Some.class,
  Other.class})指定
自訂標註型態
• 使用default關鍵字可以對成員設定預設值
自訂標註型態
• 如果是Class設定的屬性比較特別,必須自
  訂一個類別作為預設值
自訂標註型態
• 如果要設定陣列預設值的話,可以在
  default之後加上{}
自訂標註型態
• 可使用java.lang.annotation.Target
  限定標註使用位置,限定時可指定
  java.lang.annotation.ElementType
  的列舉值
自訂標註型態
• 想將@Test8限定只能用於方法:
自訂標註型態
• 想要將標註資料加入文件,可以使用
  java.lang.annotation.Documented
自訂標註型態
• 在定義標註時設定
  java.lang.annotation.Inherited標
  註,就可以讓標註被子類別繼承
執行時期讀取標註資訊
• 如果希望於執行時期讀取標註資訊,可以於
  自訂標註時使用
  java.lang.annotation.Retention搭
  配
  java.lang.annotation.RetentionPo
  licy列舉指定…
執行時期讀取標註資訊
執行時期讀取標註資訊
• 可使用
  java.lang.reflect.AnnotatedEleme
  nt介面實作物件取得標註資訊
執行時期讀取標註資訊
• Class、Constructor、Field、Method、
  Package等類別,都實作了
  AnnotatedElement介面
• 如果標註在定義時的 RetentionPolicy
  指定為RUNTIME,就可以用Class、
  Constructor、Field、Method、
  Package等類別的實例,取得設定的標註資
  訊
執行時期讀取標註資訊
執行時期讀取標註資訊

More Related Content

What's hot

Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Justin Lin
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝Justin Lin
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Justin Lin
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJustin Lin
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJustin Lin
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Justin Lin
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJustin Lin
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJustin Lin
 
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Justin Lin
 
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Justin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Justin Lin
 
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Justin Lin
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJustin Lin
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJustin Lin
 
從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Justin Lin
 
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Justin Lin
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換Justin Lin
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programmingted-xu
 
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Justin Lin
 

What's hot (20)

Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
 
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
 
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
 
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
 
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
 

Viewers also liked

Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310  –  Problems, Concepts and ApproachesJoda-Time & JSR 310  –  Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and ApproachesJustin Lin
 
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理Justin Lin
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Justin Lin
 
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論Justin Lin
 
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理Justin Lin
 
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?Justin Lin
 
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Justin Lin
 
Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄Justin Lin
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJustin Lin
 
Java 8 與 retrolambda
Java 8 與 retrolambdaJava 8 與 retrolambda
Java 8 與 retrolambdaJustin Lin
 
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Justin Lin
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional APIJustin Lin
 

Viewers also liked (14)

Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310  –  Problems, Concepts and ApproachesJoda-Time & JSR 310  –  Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and Approaches
 
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
 
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
 
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
 
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
 
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
 
Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
 
Java 8 與 retrolambda
Java 8 與 retrolambdaJava 8 與 retrolambda
Java 8 與 retrolambda
 
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
 
資料結構
資料結構資料結構
資料結構
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
 

Similar to Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註

CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註Justin Lin
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註Justin Lin
 
3. java basics
3. java basics3. java basics
3. java basicsnetdbncku
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdfczzz1
 
Ecmascript
EcmascriptEcmascript
Ecmascriptjay li
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHPJace Ju
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3ArBing Xie
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享zenyuhao
 
Java面试知识
Java面试知识Java面试知识
Java面试知识yiditushe
 
105-2 iOS程式設計(二)
105-2 iOS程式設計(二) 105-2 iOS程式設計(二)
105-2 iOS程式設計(二) Hao Lee
 
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)永立 連
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式Justin Lin
 
Clojure简介与应用
Clojure简介与应用Clojure简介与应用
Clojure简介与应用Robert Hao
 

Similar to Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 (20)

CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註
 
3. java basics
3. java basics3. java basics
3. java basics
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdf
 
Ecmascript
EcmascriptEcmascript
Ecmascript
 
Java 網路程式
Java 網路程式Java 網路程式
Java 網路程式
 
SCJP ch09
SCJP ch09SCJP ch09
SCJP ch09
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHP
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
Excel VBA
Excel VBAExcel VBA
Excel VBA
 
認識物件
認識物件認識物件
認識物件
 
進階主題
進階主題進階主題
進階主題
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享
 
Java面试知识
Java面试知识Java面试知识
Java面试知识
 
105-2 iOS程式設計(二)
105-2 iOS程式設計(二) 105-2 iOS程式設計(二)
105-2 iOS程式設計(二)
 
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式
 
Clojure简介与应用
Clojure简介与应用Clojure简介与应用
Clojure简介与应用
 

More from Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組Justin Lin
 

More from Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
 

Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註