Discussion:
[問題] ArrayList的get方法
(时间太久无法回复)
越高越想征服...
2006-08-15 08:20:02 UTC
Permalink
我將int存入ArrayList中,

用get()將他取出,但不知道要如何轉型 @@a

問這個問題不知道會不會被噓....

各位大大多多包含

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.198.137
小安
2006-08-15 09:59:43 UTC
Permalink
※ 引述《tan45is1 (越高越想征服...)》之銘言:
: 我將int存入ArrayList中,
: 用get()將他取出,但不知道要如何轉型 @@a
: 問這個問題不知道會不會被噓....
: 各位大大多多包含

首先,Collection 中是無法存放 primitive 的,只能夠存放 Object

但是在 5.0 裡頭,這樣的寫法並不會產生任何錯誤,
這是因為 5.0 的 auto-boxing 把 int 包裝成了 Integer

---

但是因為沒有使用 Generic 的 Collection,
是以 Object type reference 你存入的東西
所以取出來的物件自然也是 Object

要如何把這個物件轉回 int
這時候就會用到 auto-unboxing
int n = (Integer) list.get(0);
( 先將 Object 轉成 Integer,再 unboxing 成 int )

---

雖然這麼做是沒問題的,
但是你應該善用 5.0 的另一個特色,也就是前面提過的 Generic

在宣告 ArrayList 的時候採用這樣的方式:
ArrayList<Integer> list = new ArrayList<Integer>();

接下來你就可以如同下方這樣,很直覺的操作 ArrayList 了
list.add(123);
int a = list.get(0);

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.173.31
推 PsMonkey:安董出現了... [跪拜迎接]  08/16 01:59
Loading...