一道 Java 面试题

原文转载自 「当然我在扯淡」 ( http://www.yinwang.org/blog-cn/2020/02/13/java-type-system ) By 王垠

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

一道 Java 面试题

关于程序员对 Java 类型系统的理解,比较高级的一个面试问题是这样:

public static void f() {
    String[] a = new String[2];
    Object[] b = a;
    a[0] = "hi";
    b[1] = 1;
}

这段代码里面到底哪一行错了?为什么?如果某个 Java 版本能顺利运行这段代码,那么如何让这个错误暴露得更致命一些?

注意这里所谓的「错了」是本质上,原理上的,而不一定是 Java 编译器,IDE 或者运行时报给你的。也就是说,你用的 Java 实现,IDE 都可能是错的,没找对真正错误的地方,或者没告诉你真正的原因。

如果你知道哪里错了,并且真正知道「为什么」错了,可以联系我。

more_vert