2

私は示されているようなクラスを持っています

package com;

public class Person {
boolean registered;

public boolean isRegistered() {
    return registered;
}

public void setRegistered(boolean registered) {
    this.registered = registered;
}
}

Data to Person オブジェクトは、 DB に存在する Data に基づいて設定されます。問題は、古いレコードの場合、登録されたフィールドが存在しないことです。

ファイルが存在するかどうかをテストするにはどうすればよいですか??

パッケージコム;

public class Test {

    public static void main(String args[]) {
        Person per = new Person();

        if (per.isRegistered()) {

        }
    }

}

その Person オブジェクトに per.isRegistered() フィールドが存在するかどうかを確認するにはどうすればよいですか??

4

10 に答える 10

6

クラスが現在定義されている方法では、 (プリミティブ型) には値がなく、とのみがPersonあるため、できません。booleannulltruefalse

、、またはの (同等のオブジェクト) を使用できます。BooleannullBoolean.TRUEBoolean.FALSE

しかし、より深いレベルでこれを解決したいと思う可能性が高くなります。このフィールドが存在しないデータがデータベースにあるとおっしゃいました。それらの記録は登録されていると見なされますか? あなたのクラスは、その質問に対する答えを反映する必要があります。

于 2013-03-04T11:32:23.107 に答える
5

booleannull にすることはできず、true または false のみにすることができるプリミティブ データ型です。しかしBoolean、ブールデータ型のラッパーである Object は、 null およびBoolean.TRUEand Boolean.FALSE;の可能性があります。

public class Person {
    Boolean registered;
    ...
}

...

Person per = new Person();

if (per.isRegistered()!=null ) {
    if(!per.isRegistered()){
         ...
    }else{
         ...
    }
}
于 2013-03-04T11:33:27.430 に答える
3

boolean できませnullBoolean)( を使用するか、複合型を構築する必要があります。

于 2013-03-04T11:32:40.367 に答える
1

3 つの状態のブール値が必要です。真、偽、そしてそこにありません。

これは、プリミティブブール値の代わりにブール値クラスを使用し、null を「存在しない」インジケータとして使用することで実現できます。

于 2013-03-04T11:33:19.850 に答える
1

何を考えているのかさっぱり分からない。ただし、値が次の {true/false/null} のいずれかになるブール値を処理する場合Booleanは、単純なラッパーであるオブジェクトを使用する必要がありますが、値booleanを取ることができます (すべての Java オブジェクトをnullヌル)。

于 2013-03-04T11:34:45.480 に答える
1

その種類の参照の値を許可するBoolean(大文字の B) クラスを使用できます。NULL

または、 、 、 の3つenumの可能な値を持つ を使用できます。これはより明確なセマンティクスを持ち、後で (必要に応じて) 他の可能な値を追加できます。NOT_AVAILABLEYESNO

于 2013-03-04T11:33:06.773 に答える
1

オプションを使用する必要があります

if (Optional.ofNullable(per.isRegistered()).orElse(false)) {
  // ...
}
于 2017-12-04T09:38:23.330 に答える
0

boolean registeredデフォルトでは false です。またboolean、クラスとは関係ありませんObjectが、プリミティブな値なのでnull、まったくあり得ません。

ここで取得できる Null ポインターは 1 つだけperです。null

于 2013-03-04T11:34:14.320 に答える
0

列をヌル可能にし、ブール値の代わりにブール値を使用します。ただし、特定の問題については、 null の場合、ユーザーは登録されていないと想定できると思います。

于 2013-03-04T11:34:17.423 に答える
0

テスト クラスで使用するには、 person クラスを拡張する必要があります。ブール値も定義する必要があります。

于 2013-03-04T11:34:39.567 に答える