我有一个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)方法不适用于参数(长整数)
答案 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。