为了账号安全,请及时绑定邮箱和手机立即绑定

从 Java 调用 Scala“val 函数”会出错

从 Java 调用 Scala“val 函数”会出错

牛魔王的故事 2023-03-23 15:08:15
我有一个 scala val 函数,如下所示:  val getTimestampEpochMillis = (year:Int, month:Int, day:Int, hour:Int, quarterHour:Int, minute:Int, seconds:Int) => {    var tMinutes = minute    var tSeconds = seconds    if(minute == 0){      if(quarterHour == 1){        tMinutes = 22        tSeconds = 30      }else if(quarterHour == 2){        tMinutes = 37        tSeconds = 30      }else if(quarterHour == 3){        tMinutes = 52        tSeconds = 30      }else if(quarterHour == 0){        tMinutes = 7        tSeconds = 30      }    }    val localDateTime = LocalDateTime.of(year, month, day, hour, tMinutes, tSeconds)    localDateTime.atZone(ZoneId.of("GMT")).toInstant().toEpochMilli()  }当我从 Java 调用此函数时,出现以下错误:[ERROR]   required: no arguments                                          [ERROR]   found: int,int,int,int,int,int,int                              [ERROR]   reason: actual and formal argument lists differ in length    调用 scala val 函数的 Java 代码:Long minTimestampOfGranularity = getTimestampEpochMillis(year, 1, 1, 0, 0, 0, 0);
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

尝试

getTimestampEpochMillis().apply(year, 1, 1, 0, 0, 0, 0);

()并注意中的括号getTimestampEpochMillis()javap使用我们得到的检查生成的类

public scala.Function7<java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, scala.runtime.BoxedUnit> getTimestampEpochMillis();

我们看到getTimestampEpochMillis()returns 的地方scala.Function7,所以我们首先必须先调用,getTimestampEpochMillis()然后才能调用apply参数。


查看完整回答
反对 回复 2023-03-23
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信