Кастинг Boolean в Boolean в Java - PullRequest
       29

Кастинг Boolean в Boolean в Java

8 голосов
/ 20 октября 2010

У меня есть код как

public class BooleanTest {
    public BooleanTest() {
        super();
    }


    public static void main(String args[]){
      BooleanTest bt = new BooleanTest();
      bt.doProcess();

    }

    private boolean method() {
        return false;
    }

    private void doProcess() {
      Boolean obj = (Boolean)method();
      System.out.println(obj.booleanValue());
    }
}

Вопрос в том, может ли строка System.out.println(obj.booleanValue()); выбросить NullPointerException в любой ситуации?

Ответы [ 4 ]

12 голосов
/ 20 октября 2010

Нет, когда вы помещаете примитивное значение в его эквивалентный тип оболочки, результат никогда не будет нулевым.

8 голосов
/ 20 октября 2010

Нет ,

Причина: примитив никогда не удерживает значение NULL, поэтому преобразование их в оболочку никогда не приведет к NPE,

А также не нужно кастовать будет autobox

3 голосов
/ 20 октября 2010

Он никогда не бросит NPE, а также, если вы используете java> = 1.5, вам не нужно его разыгрывать. Это называется autoboxing, который представлен в JDK 1.5.

2 голосов
/ 20 октября 2010

Просто чтобы быть педантичным, вы могли бы установить System.out в значение null, тогда эта строка сгенерирует NPE.

Но это было бы странно.

...