如何避免过多的空比较

时间:2011-06-22 21:55:06

标签: java nullpointerexception jena

我正在与JENA framework合作以获取有关公共合同的信息并将其作为RDF发布,我无法解决以下问题:
在创建新的RDF模型时,我为每个合约创建新的Resource,然后使用JENA的addProperty(Property, RDFNode)addProperty(Property, String)方法分配一堆属性(我所抓取的)。问题是,有些合同缺少某些属性,所以我得到NullPointerException 使用

if(contract.getProperty() != null)
{
   resource.addProperty(VOCABULARY.property, contract.getProperty());
}

对于每一个属性可能不是最好的方法,因为addProperty()方法的第二个参数差别很大 (它可以直接是contract.getProperty(),但有时也可以是model.createLiteral(contract.getProperty())model.createTypedLiteral(contract.getProperty(), XSDDataType.XSDInt)等等,我无法创建自己的myAddProperty()方法 在哪里我会检查null并拨打JENA的addProperty() 作为跳过所有null属性的最佳解决方案,您会建议什么? 非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

将null检查重构为一个单独的方法:

private void addProperty(final Resource resource, final String key, final String value) {
    if (value != null) {
        resource.addProperty(key, value);
    }
}

然后您可以按如下方式使用此方法:

addProperty(resource, VOCABULARY.property, contract.getProperty());

答案 1 :(得分:0)

我对这些框架并不熟悉,但也许你可以继承Resource并做这样的事情? :

@overrides
public void addProperty(String key, String value)
{
   if (value != null) super.addProperty(key,value);
}