编译器
一道 Java 面试题
· ☕ 1 分钟

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

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

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