素材牛VIP会员
ArrayStoreException API上面的实例,为什么编译时,能够通过,运行才会出现错误,这到底是怎样错误检查机制?
 飞***飞  分类:Java代码  人气:854  回帖:1  发布于6年前 收藏
Object x[] = new String[3];
     x[0] = new Integer(0);
 标签:java

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv4 码徒
Ro***ng Linux系统工程师 6年前#1

java编译期类型检查很大程度上是基于变量/表达式的类型, 而不是值的类型

// 更一般的例子: 这样也可以编译
Object a = 1;
String b = (String) a;

String c = (String) (Object) 2;

构造类型的类型检查多了协变逆变, 不过这个方针是一样的

以这些简单例子来说, 用静态分析其实可以发现问题.. 不过javac没做而已

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取