有人能解释一下这背后的原因吗?为什么会抛出异常?
package integerProblem;
public class Test {
public enum Letter{
A, B, C;
}
public static void main(String[] args) {
Letter foo = Letter.C;
Integer bar = Letter.A == foo ? 1 : null; // bar is set to null.
System.out.println("Value of bar: " + bar);
Integer baz = Letter.A == foo ? 1 : Letter.B == foo ? -1 : null; // com.sun.jdi.InvalidTypeException: Generated value (null) is not compatible with declared type (int). occured invoking method.
System.out.println("Value of bar: " + baz);
}
}
输出:
Value of bar: null
Exception in thread "main" java.lang.NullPointerException
at integerProblem.Test.main(Test.java:15)
如果bar
或baz
是null
,它们不能与String
连接,只有一个有效的对象可以与另一个String
和+
一起使用(它将隐式地调用对象上的toString()
)。您可能希望考虑使用空的String
(""
)来代替,这应该可以工作。