Java的。 可能抛出的params(NullpointerException)的函数?

当我有许多可以抛出exception的表达式时,例如:

instanceObj.final_doc_type = instance.getFinalDocument().getValue().getType().getValue(); instanceObj.final_doc_date = instance.getFinalDocument().getValue().getDate().toGregorianCalendar().getTime(); instanceObj.appeal_date = instance.getFinalDocument().getValue().getAppealDate().getValue().toGregorianCalendar().getTime(); ... instanceObj.start_doc_type = instance.getStartDocument().getValue().getDocType().getValue(); instanceObj.apeealed_type = instance.getStartDocument().getValue().getApeealedType().getValue(); instanceObj.declarers_list_mult_id = instance.getStartDocument().getValue().getDeclarers().getValue().getString(); ... 

是否有任何方法来处理这些表达式由某个函数将返回一些默认值(或null)如果参数无效并引发exception – 这可能发生,例如:

 instance.getFinalDocument().getValue().getDate() = null 

因此,我不需要使用try-catch块包围每个表达式或检查每个点是否为null。

使用Optional.map

 instanceObj.final_doc_type = Optional.ofNullable(instance) .map(Instance::getFinalDocument) .map(Document::getValue) .map(Value::getType) .map(Type::getValue) .orElse(null); 

如果链中的任何内容为null则将final_doc_type设置为null

如果您只想在非空值的情况下设置其值,请删除该分配,并将orElse更改为ifPresent

 Optional.ofNullable(instance) /* ... */ .ifPresent(t -> instanceObj.final_doc_type = t);