首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测长类型是否实际为空?

问如何检测长类型是否实际为空?
EN

Stack Overflow用户
提问于 2012-01-05 20:19:56
回答 4查看 45.5K关注 0票数 6

我们的MySQL数据库中有一个可空(类型为long)的列(命名为referral)。我们使用hibernate进行ORM。

我正在尝试获取给定成员的列的值。有些是空的,如果不是,它是指向另一个成员的id,它是引用者。

问题是在我试图检测的java代码中,该成员的列是否为null,如果不为空,则执行一些操作。

代码语言:javascript
复制
String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
    //do something
}

member.getReferral()返回引用列的值(类型为long)。其中一些列为空列,有些列为空列。

上面的代码编译得很好,但是当我对引用列为null的用户调用该方法时,我会得到一个nullPointerException。

我怎样才能正确地检测到这一点呢?

提前感谢!

完整答案:

感谢@Marcelo的最佳正确答案。

下面是处于其最后状态的代码:

代码语言:javascript
复制
Long referrerAffiliateId = member.getReferral();
if (referrerAffiliateId != null) {
    //...
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-05 20:22:59

假设member.getReferral()返回一个Long,请使用:

代码语言:javascript
复制
if (member.getReferral() != null)

在Hibernate中,如果希望能够检测属性中的空值,就不能使用基元类型,因为它们总是具有默认值0。

票数 4
EN

Stack Overflow用户

发布于 2012-01-05 20:22:29

异常可能来自Long.toString(),请尝试在转换为字符串之前检查该值:

代码语言:javascript
复制
Long ref = member.getReferral();
if (ref == null) {
  // Do something...
} else {
  String referrerAffiliateId = Long.toString(ref);
  // ...
}
票数 4
EN

Stack Overflow用户

发布于 2012-01-05 20:22:56

变化

代码语言:javascript
复制
String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
    //do something
}

至:

代码语言:javascript
复制
if (member.getReferral() != null){

    String referrerAffiliateId = Long.toString(member.getReferral());
    //do something
}

当您使用null参数调用NullPointerException时,很可能会得到Long.toString()。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8749186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档