小编Jay*_*ris的帖子

Java NullPointerException 检查链式方法

我想在访问几个类深的字段(在 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,所以现在我必须检查它们是否有效。

有没有一种更短的方法可以像我想要的那样检查上述所有内容?

java null nullpointerexception

5
推荐指数
2
解决办法
1703
查看次数

从字节扩展到Int(Marshmallow bug)

对于这个长期问题提前抱歉,但一切都应该是直截了当的,并清楚发生了什么,谢谢你看看.请注意,这实际上不是代码,只是伪代码来理解应用程序的实现.

问题

字节不会扩大到真正的数值.注意: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)

android android-6.0-marshmallow

5
推荐指数
1
解决办法
188
查看次数

为什么在java中不允许这种贬低?

假设我有一个超类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不允许这样呢?

谢谢!

java oop polymorphism downcast

2
推荐指数
1
解决办法
1183
查看次数

PHP MYSQL多维数组提取值

我的阵列:

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)

php mysql arrays

0
推荐指数
1
解决办法
68
查看次数

暂停方法1秒的方法

我正在用Java做一个控制台应用程序.我有一种方法,我需要等待一秒钟,然后继续我的方法.这只是一个简单的方法,因此它意味着没有涉及任何线程.我能做什么?

我的程序看起来像这样:

  • 用户写东西
  • 程序等待1秒钟
  • 然后它做计算.

它必须等待1秒!

java wait

0
推荐指数
1
解决办法
8024
查看次数