作者tgbsa (每天进步一点点)
看板java
标题[问题] 泛型类别...
时间Mon Jun 2 23:02:38 2008
程式码如下:
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)
1F:推 csihcs:你确定可以编译并执行??? 06/02 23:41
2F:→ tgbsa:是的 06/02 23:56
※ 编辑: tgbsa 来自: 118.170.0.173 (06/03 00:01)