Подтвердить что ты не робот

Предоставляет ли Java допустимые типы?

В С# я могу переменную разрешить нули с вопросительным знаком. Я хочу получить истинный/ложный/нулевой результат. Я хочу, чтобы он был установлен в значение null по умолчанию. Логическое значение будет установлено в true/false результатом теста, но иногда тест не запускается, а логическое значение по умолчанию имеет значение false в java, поэтому 3-й вариант для проверки был бы приятным.

Пример С#:

bool? bPassed = null;

Есть ли у java что-то похожее на это?

4b9b3361

Ответ 1

Нет.

Вместо этого вы можете использовать класс в коробке Boolean (который является обычным классом, а не примитивным типом) или трехзначный enum.

Ответ 2

вы можете использовать:

Boolean b = null;

то есть объект java.lang.Boolean в Java.

И затем также установите true или false простым присваиванием:

Boolean b = true; или Boolean b = false;

Ответ 3

Нет, в java примитивы не может иметь нулевого значения, если вы хотите эту функцию, вы можете использовать Boolean.

Ответ 4

Да, вы можете.

Чтобы сделать это, java имеет класс-оболочку для каждого примитивного типа. Если вы сделаете свою переменную экземпляром класса-оболочки, ее можно присвоить null точно так же, как любая нормальная переменная.

Вместо:

boolean myval;

... вы можете использовать:

Boolean myval = null;

Вы можете назначить его следующим образом:

myval = new Boolean(true);

... И получить его примитивное значение следующим образом:

if (myval.booleanValue() == false) {
  // ...
}

Каждый примитивный тип (int, boolean, float,...) имеет соответствующий тип оболочки (Integer, boolean, float,...).

Java autoboxing позволяет компилятору иногда автоматически принуждать тип обертки к его примитивному значению и наоборот. Но вы всегда можете сделать это вручную, если компилятор не может понять это.

Ответ 5

В Java примитивные типы не могут быть нулевыми. Однако вы можете использовать Boolean и друзей.

Ответ 6

Нет, но вы можете использовать класс Boolean вместо примитивного типа Boolean для размещения null

Ответ 7

Конечно, вы можете пойти с Boolean, но для того, чтобы сделать более очевидным, что ваш тип может иметь "значение" или "нет значения", очень легко сделать класс-оболочку, который делает больше или меньше того, что делают типы ? в С#:

public class Nullable<T> {
    private T value;
    public Nullable() { value = null; }
    public Nullable(T init) { value = init; }
    public void set(T v) { value = v; }
    public boolean hasValue() { return value != null; }
    public T value() { return value; }
    public T valueOrDefault(T defaultValue) { return value == null ? defaultValue : value; }
}

Затем вы можете использовать его следующим образом:

private Nullable<Integer> myInt = new Nullable<>();
...
myInt.set(5);
...
if (myInt.hasValue()) 
   ....
int foo = myInt.valueOrDefault(10);

Обратите внимание, что что-то вроде этого стандартно, так как Java8: класс Optional. https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

Ответ 8

Если вы используете объект, он позволяет null

Если вы используете примитивные типы данных, он не разрешает null

В этой причине Java Класс Wrapper