当尝试用三元操作符初始化Integer变量时InvalidTypeException



有人能解释一下这背后的原因吗?为什么会抛出异常?

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)

如果barbaznull,它们不能与String连接,只有一个有效的对象可以与另一个String+一起使用(它将隐式地调用对象上的toString())。您可能希望考虑使用空的String("")来代替,这应该可以工作。

相关内容

  • 没有找到相关文章

最新更新