Java 如何从可能返回null的方法中分配变量?

Java 如何从可能返回null的方法中分配变量?,java,freemarker,Java,Freemarker,我有以下代码,其中我将Java方法的结果分配给freemarker变量 <#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)> 如果该Java方法返回null,它仍然会在行崩溃,但以下情况除外: freemarker.core.InvalidReferenceException: Error on line 109, column 45 in index.html.ftl s

我有以下代码,其中我将Java方法的结果分配给freemarker变量

<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)>
如果该Java方法返回
null
,它仍然会在
行崩溃,但以下情况除外:

freemarker.core.InvalidReferenceException: Error on line 109, column 45 in index.html.ftl
solverBenchmark.findSingleBenchmark(problemBenchmark) is undefined.
It cannot be assigned to singleBenchmark
    at freemarker.core.Assignment.accept(Assignment.java:111)

如何避免此异常而不必在ftl中多次调用
findSingleBenchmark
方法?

处理此类不安全API的正常方法是使用
(bang)运算符:

<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)!>

这在和中有详细说明


如果您的代码段是实际代码,您可以(显著地)将其缩短为:

${singleBenchmark.score!”“}
<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)!>
<td>${singleBenchmark.score!""}</td>