gpt4 book ai didi

java - 传递空整数作为参数

转载 作者:行者123 更新时间:2023-11-29 07:41:30 25 4
gpt4 key购买 nike

我有一个方法,它通过重载将 Integer baz 作为可选参数 ...

public static void myMethod(String fooBar, Integer baz) {

switch(baz){} // baz gets unboxed, NPE if it was null

if(baz != null) {
// Do something
}
else {
// Do something else
}
}

public static void myMethod(String fooBar) {
myMethod(fooBar, null);
}

但是,它向我发出有关 else 语句的警告,称它是死代码。但是当在没有 baz 的情况下调用该方法时,baz 应该默认为 null 所以这不应该是死代码。关于我在这里做错了什么的任何解释?即使我在重载方法中将它设置为 nullbaz 怎么总是非空?

编辑:删除了实际代码,以便我的问题更易于阅读。

最佳答案

您正在 Integer 变量上使用 switch。如果 Integernull,则 switch 会抛出一个您不会捕获的 NullPointerException

所以程序流是不可能到达else条件的。

Integer 如果在 switch 语句中使用,则 未装箱。您必须在 switch 语句之前明确检查 null。另见 How to use null in switch .


附言重现问题的最少代码是:

public static void myMethod(String fooBar, Integer baz) {

switch(baz){} // baz gets unboxed, NPE if it was null

if(baz != null) {
// Do something
}
else {
// Do something else
}
}

关于java - 传递空整数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com