但製作 Generic 時會發生如 Generic Array Creation 的錯誤
應如何正式宣告 Generic ?
首先要明 Generic Creation 如何發生
一般在 Java 宣告一個類別 (或類型) 可以使用
1 | Object object = new Object(); |
因為 Java 的 Object 類別有一個 constructor 為 Object() ,因此能以 Object() 建立 Object
但當 Object 改為 Generic 時
1 | Generic generic = new Generic(); |
只能指派 null 建立 Generic
1 | Generic generic = null ; |
另一個情況是 Generic Array Creation
製作類別偶然是需要應用 Generic Array
一般 Java 宣告 array 為
1 | Object[] objects = new Object[ 2 ]; |
1 | Object[] objects = { new Object(), null }; |
new Object[2] 為宣告建立一個具有 2個元素 的 Object array
{new Object(), null} 為宣告建立一個以直接指派資料的 Object array
Generic array 則有些建立限制
原則上 Generic 是能以 null 建立
但在 Java 上使用
1 | Generic[] generics = new Generic[ 1 ]; |
1 | Generic[] generics = { null }; |
看來 Java 當遇到 Generic 及 new 或 大括弧 便禁止
但 Generic Array 仍然有機會使用,唯有借用 Object 來處理
1 2 | Objects[] objects = new Object[ 2 ]; Generic[] Generics = (Generic[]) objects; |
由於 new Object[2] 會以 null 指派至 object[0] 及 object[1] 而 null 是唯一 Generic 能接受指派的資料
最後以 Generic[] 強制型態轉,將 Object array 轉為 Generic array 便成功
沒有留言 :
張貼留言