您的位置:首页 > 编程语言 > Java开发

为何Java不支持泛型数组

2014-12-25 12:45 225 查看
java中不支持以T[] arr = new T[10]的形式生成泛型数组。

这是为何?

1. java引入了泛型机制主要是为了避免ClassCastException的错误的。

class Generic {

Object info;

void setInfo(Object info) ;

Object getInfo();

}

main(){

Generic g = new Generic();

Integer i = g.setInfo("hello world").getInfo();

}

编译时无错误,但是运行时报错:Runtime error: ClassCastException。

因此java想要在编译时就查出此错误,于是加入了泛型机制。

class Generic <T> {

T info;

void setInfo(T info);

T getInfo(); 

}

main() {

Generic<String> g = new Generic<String>(); 

Integer i = g.setInfo("hello world").getInfo();

}

这时编译就会报错。

2. However,如果引入泛型数组,则Runtime ClassCastException又回来了。

main() {

Generic<String> g[] = new Generic<String>[3];

Object t[] = g;

t[0] = new Genric<Integer>();

t[0].setValue(10);

String s = g[0].getValue; //这步运行报错。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: