Java:如何仍然发生不可能的NullPointerException?

mst*_*rap 7 java nullpointerexception

我刚收到以下关于我们软件的错误报告:

java.lang.NullPointerException
    at java.util.Arrays.equals(Unknown Source)
    at our.app.OurMain(OurMain.java:13)
Run Code Online (Sandbox Code Playgroud)

这种情况发生在Windows上的JRE 1.7.0_45上,其相应的源代码Arrays.equals是:

public static boolean equals(byte[] a, byte[] a2) {
    if (a==a2)
        return true;
    if (a==null || a2==null)
        return false;

    int length = a.length;
    if (a2.length != length)
        return false;

    for (int i=0; i<length; i++)
        if (a[i] != a2[i])
            return false;

    return true;
}
Run Code Online (Sandbox Code Playgroud)

调用代码是:

final byte[] b1 = ... // populate array
final byte[] b2 = ... // populate array
final boolean equal = Arrays.equals(b1, b2);
Run Code Online (Sandbox Code Playgroud)

显然没有办法NullPointerException在这里成长.它怎么还能发生?错误报告可以被认为是值得信赖的.

小智 -1

如果您的数组实际上是“ ”数组,并且将 null 作为值之一,则可能会发生这种情况,因此在拆箱( )java.lang.Byte时会出现此异常。a[i] != a2[i]

  • Byte[] 和 byte[] 不可互换作为方法参数,没有从 Byte[] 到 byte[] 的自动转换 (5认同)