【问题标题】:Java. Function with possibly throwable params (NullpointerException)?爪哇。具有可能抛出参数的函数(NullpointerException)?
【发布时间】:2018-03-14 08:36:14
【问题描述】:

当我有多个可以抛出异常的表达式时,例如:

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();
...

是否有任何方法可以通过某些 one 函数 处理这些表达式可以发生,例如:

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

这样我就不需要用 try-catch 块包围每个表达式或检查每个点是否为空。

【问题讨论】:

标签: java exception nullpointerexception


【解决方案1】:

使用Optional.map:

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

这会将final_doc_type 设置为null,如果链中的任何内容是null

如果只想在非空值的情况下设置其值,去掉赋值,将orElse改为ifPresent

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

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2021-03-12
    相关资源
    最近更新 更多