【问题标题】:Calling Java method that receive variable amount of parameters from Scala调用从 Scala 接收可变数量参数的 Java 方法
【发布时间】:2019-09-10 14:41:56
【问题描述】:

我正在尝试封装一个接收可变数量参数的 Java 方法,例如:

void info(String var1, Object... var2);

我使用了以下内容:

def info(message: String, any: Any*): Unit = {
   LOGGER.info(message, any)
}

但这不起作用,它最终调用了一个只接收 1 个对象的信息:

void info(String var1, Object var2);

调用接收多个参数的java方法如何解决?

谢谢!

【问题讨论】:

标签: java scala scala-java-interop


【解决方案1】:

试试

def info(message: String, any: Any*): Unit = {
  LOGGER.info(message, any.asInstanceOf[Seq[Object]]: _*)
}

def info(message: String, any: AnyRef*): Unit = {
  LOGGER.info(message, any: _*)
}

没有强制转换但不适用于原始类型。

【讨论】:

  • 第一个有效,但第二个无效。会不会 AnyRef 没有 Int 的原语?我在这里找到了:docs.scala-lang.org/tour/unified-types.html
  • @FedeE。我写道,第二个不适用于像 Int 这样的原始类型。
猜你喜欢
  • 2016-01-15
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2012-03-21
  • 2011-12-18
相关资源
最近更新 更多