我有一个如图所示的课程
package com;
public class Person {
boolean registered;
public boolean isRegistered() {
return registered;
}
public void setRegistered(boolean registered) {
this.registered = registered;
}
}
将根据DB中的数据设置数据到人物对象。 问题是对于较旧的记录,注册的文件不存在。
所以我怎么能测试该档案是否存在?
package com;
public class Test {
public static void main(String args[]) {
Person per = new Person();
if (per.isRegistered()) {
}
}
}
如何检查该Person对象是否存在per.isRegistered()字段?
答案 0 :(得分:6)
当前定义Person
类的方式是不可能的,因为boolean
(基本类型)没有null
值,只有true
和{{ 1}}。
您可以使用false
(等效对象),可以是Boolean
,null
或Boolean.TRUE
。
但更有可能你想在更深层次上解决这个问题。您已经说过,您的数据库中没有此字段不存在的数据。这些记录是否已注册?你的班级应该反映这个问题的答案。
答案 1 :(得分:5)
boolean
是原始数据类型,不能为空,只能为true或false。但Boolean
对象是布尔数据类型的说唱者,它可以为空Boolean.TRUE
和Boolean.FALSE
;
public class Person {
Boolean registered;
...
}
...
Person per = new Person();
if (per.isRegistered()!=null ) {
if(!per.isRegistered()){
...
}else{
...
}
}
答案 2 :(得分:3)
boolean
不能为null
;您需要使用(Boolean)
或构建复合类型。
答案 3 :(得分:1)
您可以使用Boolean
(大写B)类,该类允许NULL
类型的参考值。
或者,您可以使用具有三个可能值的enum
:NOT_AVAILABLE
,YES
,NO
。这有一个更清晰的语义,允许您稍后添加其他可能的值(如果需要)。
答案 4 :(得分:1)
你需要一个三态布尔值;真实,虚假而不存在。
您可以使用布尔类而不是基元布尔值来实现此目的,并使用null作为“not there”指示符。
答案 5 :(得分:1)
我真的不明白你的想法。但是如果你想处理一个布尔值,它的值可以是以下{true / false / null}之一,你应该使用一个Boolean
对象,它是一个简单的boolean
包装器,但它可以采用null
值(因为每个Java对象都可以设置为null)。
答案 6 :(得分:1)
您应该使用Optional
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class MapDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Map<String, Integer> map = new HashMap<>();
System.out.println("Elemment number: ");
String sNum = input.nextLine();
int iNum = Integer.parseInt(sNum);
for (int i = 0; i < iNum; i++) {
System.out.println("Key: ");
String sKey = input.nextLine();
System.out.println("Value: ");
String sValue = input.nextLine();
int iValue = Integer.parseInt(sValue);
map.put(sKey, iValue);
}
}
}
答案 7 :(得分:0)
boolean registered
字段默认为false。此外boolean
与Object
类无关但与原始值无关,因此根本不能null
。
当per
为null
答案 8 :(得分:0)
使列可以为空并使用布尔值而不是布尔值。但是对于特定问题,我认为您可以假设如果它为null,则用户未注册。
答案 9 :(得分:0)
您必须扩展person类才能在测试类中使用它。 您还必须定义布尔值。