java不支持泛型数组_为何Java不支持泛型数组

本文探讨了Java泛型机制的设计目的及为何不支持创建泛型数组的原因。通过实例展示了泛型如何帮助开发者在编译阶段捕获类型错误,并解释了若支持泛型数组将导致运行时类型检查错误重现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 info;

void setInfo(T info);

T getInfo();

}

main() {

Generic g = new Generic();

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

}

这时编译就会报错。

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

main() {

Generic g[] = new Generic[3];

Object t[] = g;

t[0] = new Genric();

t[0].setValue(10);

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值