当前位置: 首页 > 知识库问答 >
问题:

向布尔变量返回null的数据库

焦学海
2023-03-14

所以我有这个方法:

class A(){

private Boolean Flag;

public java.lang.Boolean getFlag()
    {
        return this.Flag;
    }

public java.lang.Boolean setFlag(Boolean Flag)
    {
        this.Flag = Flag ;
    }
}

classB(){

boolean navalFlag = fancyObj.getFlag()
form.setNavalFlag(navalFlag?"Y":"N";

}

数据库返回null,并将标志设置为null。

什么是我可以100%避免NPE的万无一失的方法?我知道从这里可以看出,BooleantoBooleancasting不是一个保证

更新:在代码中,NPE被抛出fancyObj。getFlag()。。。这对我来说毫无意义。我预计NPE会被抛出。setNavalFlag


共有3个答案

岳浩穰
2023-03-14

改变你的方法

public java.lang.Boolean getFlag()
{
    return this.Flag;
}

比如

public java.lang.Boolean getFlag()
{
    (Flag==null) ? Boolean.FALSE : Flag;
}
宋明亮
2023-03-14
Boolean navalFlag = fancyObj.getFlag()
form.setNavalFlag((navalflag != null && navalFlag) ? "Y" : "N");

编辑的编辑,因为我错误地理解了你的评论:

参见我对评论的回答:boolean navalFlag=fancyObj。getFlag()会自动转换为布尔值navalFlag=fancyObj。getFlag()。booleanValue()

董小林
2023-03-14

什么是我可以100%避免NPE的万无一失的方法?

一个简单的方法是显式检查null,并且不要尝试取消对布尔值的装箱,除非您知道它不是null

以您当前的代码为例:

boolean navalFlag = fancyObj.getFlag()

这将尝试取消布尔值的装箱。如果是null,你会得到一个NPE。

以下修改不会有此问题:

Boolean navalFlag = fancyObj.getFlag()
form.setNavalFlag((navalFlag != null && navalFlag) ? "Y" : "N");

 类似资料:
  • 我有一个布尔方法正在对字符串进行一些错误检查。我有一个int类常量叫“numwords”=8。我将一个字符串传递给布尔方法,在该方法中,我使用.split和.length对字符串进行单词计数。一个名为“words”的int计算字符串中的单词数。完成之后,我要执行一个if语句,比较单词和数字单词。如果它们的数目相等,则返回true,否则为false。我试过==和.等于,但都没用。有什么想法吗? 我试

  • 我正在从事一项与react基于本机应用程序的用户管理相关的任务。在他们成功注册为用户后,我添加了一个存储布尔值的数据,并将其命名为emailVerifiedAccount(如果他们成功注册,这是存储的数据,如果他们单击发送给他们的电子邮件验证链接,则表明他们是否为验证用户)。在登录屏幕中,我想检查我在onAuthStateChanged中从firestore获得的布尔值,并且仅当我获得的email

  • 我想将有效负载架构添加到环境变量,以便我可以根据架构验证响应负载。 我的环境变量定义如下: 但是,我无法在我的邮递员测试代码中访问此环境变量。我尝试过通过以下方式访问它: 但是,这将返回null。如何访问使用postman创建的环境变量。我实现这一点的方式与http://blog.getpostman.com/2017/07/28/api-testing-tips-from-a-postman-p

  • 问题内容: 为什么我返回的是JavaScript函数中的布尔变量,为什么在调用函数中将其检测为字符串,但是如果我返回布尔文字,则调用函数会将其检测为布尔值? 因此,例如: 问题答案: 您无需声明状态变量。 因此,全局一个()被覆盖。 但是,[HTML5规范]将该属性定义为DOMString: 因此,它具有一个设置器(公开的或内部的),用于存储字符串化的值。 要解决此问题,只需使用语句声明您的局部变

  • 这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否匹配来返回true或false。我想我遇到了语法问题。 这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但我已经在if语句中添加了return true。

  • 照例,每个类型的值都有一个相应类型的变量。C++中的布尔类型叫做bool。布尔变量的使用和其他类型类似,如: bool fred; fred = true; bool testResult = false; 第一行是一个简单的变量声明;第二行是个赋值;第三行是声明和赋值的组合,叫做初始化。 前面提到过,比较操作符的结果是布尔值,所以可以将结果保存在布尔变量中,如: bool evenFlag =