我想在访问几个类深的字段(在 get 方法链中)时检查空指针。但是,如果早期的方法之一是null我无论如何都会得到NullPointerException。
这就是我想要检查的内容,尽管它仍然可以获得NullPointerException:
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)
这是我希望上面的代码表现出的行为:
if(x.getLocation() != null)
if(x.getLocation().getBuilding() != null)
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)
pol 上的字段是可选的,并且仅当上述 getter 不是时才应设置null。然而,建筑物和位置对象也可能是null,所以现在我必须检查它们是否有效。
有没有一种更短的方法可以像我想要的那样检查上述所有内容?
对于这个长期问题提前抱歉,但一切都应该是直截了当的,并清楚发生了什么,谢谢你看看.请注意,这实际上不是代码,只是伪代码来理解应用程序的实现.
问题
字节不会扩大到真正的数值.注意:level = -1表示尚未开始的游戏.level == 24代表游戏的结束.
1级
private byte level = -1;
private byte stage = 0;
@NonNull private final Stages[][] stages = new Stages[25][13];
public byte getLevel () {
return level;
}
public void nextLevel () {
// expect: 0
level++;
// stages[ 128][ 0] (ArrayIndexOutOfBounds)
stages[level][stage] = new Stage();
}
Run Code Online (Sandbox Code Playgroud)
第2类扩展第1类
@NonNull private final byte[][] values = new byte[25][4];
public byte getScore (final byte level, final byte player) {
// values[ 255][ 2] …Run Code Online (Sandbox Code Playgroud) 假设我有一个超类Animal,以及一个子类Dog.
我们可以说:
Animal a = new Dog();
Run Code Online (Sandbox Code Playgroud)
我们不能低声说:
Dog b = new Animal();
Run Code Online (Sandbox Code Playgroud)
所以我明白动物不一定是狗.但是,为什么在狗容器中有动物"蓝图"会抛出异常呢?因为Dog从Animal继承了方法,当我们把这种动物放入狗容器中时,我们知道Dog继承/覆盖了Animal所有的方法,那为什么Java不允许这样呢?
谢谢!
我的阵列:
Array
(
[0] => Array
(
[mobileNumber] => 5555555
[message] => test
)
[1] => Array
(
[mobileNumber] => 555555
[message] => test
)
[2] => Array
(
[mobileNumber] => 555555
[message] => test
)
[3] => Array
(
[mobileNumber] => 5555555
[message] => test
)
[4] => Array
(
[mobileNumber] => 77255552233
[message] => test
)
)
Run Code Online (Sandbox Code Playgroud)
环
foreach ($NumbersArray as $number => $message) {
echo "Number: $number Message: $message<br/>";
echo "<br/>";
}
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
Number: 0 Message: Array …Run Code Online (Sandbox Code Playgroud) 我正在用Java做一个控制台应用程序.我有一种方法,我需要等待一秒钟,然后继续我的方法.这只是一个简单的方法,因此它意味着没有涉及任何线程.我能做什么?
我的程序看起来像这样:
它必须等待1秒!