如何在Java代码中将Java函数应用于Scala选项
给定Scala选项如何在Java代码中将Java函数应用于Scala选项,java,scala,primitive-types,language-interoperability,scala-option,Java,Scala,Primitive Types,Language Interoperability,Scala Option,给定Scala选项Option[String],Option[Long],Option[Boolean]以及String,Long,Boolean的给定Java消费者,我想在Java代码中干净地应用这些选项,并进行静态类型检查。 问题是,Option[Long]和Option[Boolean]在Java代码中变成Option,因此我需要一个未选中的类型转换: <T> void acceptIfDefinedPrimitive(Option<Object> option,
Option[String]
,Option[Long]
,Option[Boolean]
以及String
,Long
,Boolean
的给定Java消费者,我想在Java代码中干净地应用这些选项,并进行静态类型检查。
问题是,Option[Long]
和Option[Boolean]
在Java代码中变成Option
,因此我需要一个未选中的类型转换:
<T> void acceptIfDefinedPrimitive(Option<Object> option, Consumer<T> consumer) {
if (option.isDefined()) {
consumer.accept((T) option.get());
}
}
但实际上,在Java端,后两个看起来像acceptIfDefinedLong(选项,Consumer)
,因此实际上没有严格的类型检查
- 我该怎么做
- 我怎样才能概括这一点
- 我如何用Java编写这个
- 有可能吗
def acceptIfDefined[T](option: Option[T], consumer: Consumer[T]):Unit = {
if (option.isDefined) {
consumer.accept(option.get)
}
}
def acceptIfDefinedLong(option: Option[Long], consumer: Consumer[java.lang.Long]):Unit = {
if (option.isDefined) {
consumer.accept(option.get)
}
}
def acceptIfDefinedBoolean(option: Option[Boolean], consumer: Consumer[java.lang.Boolean]):Unit = {
if (option.isDefined) {
consumer.accept(option.get)
}
}