从java中的scala.Option获取长值

时间:2019-05-16 10:48:18

标签: java scala-option

我有一个Option<Object>,我正试图从中获得长期价值。但这是行不通的。我尝试了以下步骤,但由于显示了编译器错误而无法获取该值。请帮忙。

//#1
Option<Object> expireTimestamp = offsetAndMetadata.expireTimestamp();
expireTimestamp.getOrElse(0L);

也尝试过

Option<Object> expireTimestamp = offsetAndMetadata.expireTimestamp();
expireTimestamp.getOrElse(new Long(0));


//#2
Option<Long> expireTimestamp = (Option<Long>) offsetAndMetadata.expireTimestamp();

Option类型的getOrElse(Function0)方法不适用于参数(长整数)

2 个答案:

答案 0 :(得分:2)

正如Thilo所评论的那样,我尝试了以下代码,并且有效

offsetAndMetadata.expireTimestamp().getOrElse(() -> 0L)

答案 1 :(得分:-1)

在getOrElse中,您提供一个参数,以防expireTimestamp的值为空。

您的Option对象为Object类型,您的替代对象为long类型。 long是原始值,因此不是Object的实例。

尝试类似的操作(未经测试):

//#1
Option<Object> expireTimestamp = offsetAndMetadata.expireTimestamp();
expireTimestamp.getOrElse(new Long(0L));

这应该可行,因为您正在创建Long,而不是原始Long。