我有以下类和一个名为ResultUtils的Utils类。
Utils方法之一计算分包商的最近一个营业年度。此方法必须返回可选的Double,因为可能是在本年度新添加了一个分包商。所以它没有过去两年的统计数据。如果一个分包商是在一年前添加的,那么它有上一个营业年度的统计数据,但没有倒数第二个营业年度的统计数据。
我的问题是正确链接getLatestResult方法。在我的示例中,ifPresentOrElse当然是错误的,因为它不能返回任何值。
我该怎么做?
public class Subcontractor
{
BusinessYear lastBusinessYear;
BusinessYear penultimateBusinessYear;
...
}
public class ResultUtils
{
public static Optional< Double > getLatestResult( Subcontractor )
{
// how to do it right here?
getResult( Subcontractor.getLastBusinessYear() )
.ifPresentOrElse( r -> return r,
() -> return getResult( Subcontractor.getPenultimateBusinessYear() ) );
}
public static Optional< Double > getResult( BusinessYear businessYear )
{
if( businessYear == null ) return Optional.empty();
// make some calculations
return Optional.of( calculcatedResult );
}
}
让我们修复代码:
public static Optional<Double> getLatestResult(Subcontractor sub) {
return getResult(sub.getLastBusinessYear()).or(() -> getResult(sub.getPenultimateBusinessYear()));
}
您有两个函数,它们都返回一个可选
。您只需要第一个有值。Optional.or
如果供应商没有值,它将调用供应商,否则它会返回自己。
如果你用8Java,那么...
public static Optional<Double> getLatestResult(Subcontractor sub) {
Optional<Double> result = getResult(sub.getLastBusinessYear());
if (result.isPresent())
return result;
return getResult(sub.getPenultimateBusinessYear());
}
获取第一个结果,检查它是否存在,如果存在,则返回它
如果不是,则返回第二个结果。
public static Optional<Double> getLatestResult(Subcontractor subcontractor) {
return getResult(subcontractor.getLastBusinessYear())
.or(() -> getResult(subcontractor.getPenultimateBusinessYear()));
}
假设您运行的是Java 9。
ifpresentorese
打开可选项,但仍需要返回一个选项。
getResult(subcontractor.getLastBusinessYork())
。getResult(subcontractor.getPenultimateBusinessYork())
。Java 8解决方案将是
public static Optional<Double> getLatestResult(Subcontractor subcontractor) {
Optional<Double> result = getResult(subcontractor.getLastBusinessYear());
return result.isPresent() ? result : getResult(subcontractor.getPenultimateBusinessYear());
}
在可选的“nil”上查询,调用属性,下标和方法的过程被定义为可选链接。 可选链接返回两个值 - 如果可选项包含'value',则调用其相关属性,方法和下标返回值 如果可选项包含'nil'值,则其所有相关属性,方法和下标返回nil 由于对方法,属性和下标的多个查询被组合在一起,因此对一个链的失败将影响整个链并导致'nil'值。 可选链接作为强制解包的替代方法 在带有'?'的可选值后指定可选链接 在可
寻找链接选项的方法,以便返回出现的第一个选项。如果不存在。 假设我有几个这样的方法: 我想把他们锁起来: 但这当然不起作用,因为需要一个值,而需要一个。
问题内容: 我最近在Swift中进行了大量编程。今天,当出现问题时,我在JavaScipt中做了一些工作: 是否有类似于JavaScript中的可选链接的内容?一种防止没有任何变量的方法? 例: 将失败一半的时间,因为有时返回未定义。 我能想到的唯一解决方案是一个函数: 我希望能够执行以下操作: 仅在返回对象后才执行问号后的部分。 但这不是很精巧。有更好的东西吗?运营商的神奇组合? 编辑 我知道我
我在一个Android Live壁纸应用程序中有如下偏好。(这些是复选框)。我想添加一个链接到一个Facebook页面到这个列表。在网上查看Android PreferenceCategory,我没有看到任何类似“LinkPreference”或“ButtonPreference”的东西,但话说回来,链接或按钮并不是真正的首选,所以也许我想把一个方形的钉子放在一个圆孔里。这可能吗?如果可能,如何可
伪类选择器,就是基于元素当前所处的状态来选取元素。由于状态通常是动态变化的,当元素处于一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可知,它是基于文档之外的抽象,所以称作伪类。 伪类选择器是CSS 中已经定义好的选择器,不能由用户随便起名,只能按CSS规定的标准格式进行使用。其语法为: 选择器:伪类名 { 属性: 值 } 链接伪类选择器 在CSS中,最常用的伪类选
请求yo帮助分页链接。在我的数据库中,我有3条记录,我想每页显示一条记录。当我选择分页链接的下一个数字时,数据没有被提取。事情是当我单击分页链接的第2个数字时,echo var_dump()显示Result是空的,并且我没有获得echo$data->电子邮件的任何值。但是当我搜索时第一次能够显示单个记录,问题只是分页的下一个链接,那么可能会有什么错误呢?我不能得到一个答案,我不确定发生了什么,所以