[問題] 泛型類別...
程式碼如下:
public class z {
public static void main(String[] argv)
{
//String[] s = (String[])new Object[10];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SimpleCollection<String> Sim = new SimpleCollection<String>();
}
}
class SimpleCollection<T>
{
private T[] objArr;
public SimpleCollection()
{
objArr = (T[]) new Object[10];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
}
請問板上眾多高手!上面那兩行有什麼不同?
依照我的觀念是,SimpleCollection中在compile time的時候會被取代為
private String[] objArr;
public SimpleCollection()
{
objArr = (String[]) new Object[10];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
但是這樣看起來怪怪的!? String型態的陣列參考指向Object!?
這樣可以編譯並執行不會丟出例外!?
但是在main中的那個我注解的statment並沒有辦法順利編譯~!這是為什麼原因阿?
是泛型類別中有什麼樣的特性我沒注意到嗎?
來補上完整程式碼好了
class Test
{
public static void main(String[] args)
{
SimpleCollection<Integer> c = new SimpleCollection<Integer>();
for(int i = 0; i < 10; i++)
{
c.add(new Integer(i));
}
for(int i = 0; i < 10; i++)
{
Integer k = c.get(i);
}
}
}
class SimpleCollection<T> {
private T[] objArr;
private int index = 0;
public SimpleCollection()
{
objArr = (T[]) new Object[10]; //問題在這
}
public SimpleCollection(int capacity)
{
objArr = (T[]) new Object[capacity]; //還有這
}
public void add(T t)
{
objArr[index] = t;
index++;
}
public int getLength()
{
return index;
}
public T get(int i)
{
return (T) objArr[i];
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.0.173
※ 編輯: tgbsa 來自: 118.170.0.173 (06/02 23:07)
推
06/02 23:41, , 1F
06/02 23:41, 1F
→
06/02 23:56, , 2F
06/02 23:56, 2F
※ 編輯: tgbsa 來自: 118.170.0.173 (06/03 00:01)
討論串 (同標題文章)