scala - 使用静态变量对 Java 类进行类型别名

标签 scala

假设 MyClass是在 Java 中定义的类,具有许多静态和非静态成员。我试图在 Scala 对象 MyObject 中为此类(和相关的伴随对象)起别名如下所示:

object MyObject {
  import javastuff._
  type MyAlias = MyClass
  val MyAlias = MyClass
}

斯卡拉克提示:
error: object MyClass is not a value
val MyAlias = MyClass

我该如何解决这个问题?谢谢。

最佳答案

虽然这在纯 Scala 中适用于类 + 伴生对象,但对于 Java 的静态方法是不可能的,因为它们不属于任何接口(interface)。

理论上,Scala 可以创建一个对象,其中包含对某个类的所有静态方法的委托(delegate),但它目前不这样做。如果您愿意编写插件,也可以为此编写编译器插件。

如果做不到这一点,您要么必须自己创建一个充满委托(delegate)的对象,要么只挑选一些方法并将它们作为函数传递。

关于scala - 使用静态变量对 Java 类进行类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943256/

相关文章:

scala - 播放框架 : how to not watch a folder for changes in Play Framework

java - 如何将 scala.collection.immutable.List[scala.collection.mutable.MutableList[String]] 转换为 java.util.List[java.util.List[String]]

scala - sbt/scala-seed.g8 和 scala/scala-seed.g8 之间有什么区别?

scala - Spark 2.2 非法模式组件 : XXX java. lang.IllegalArgumentException:非法模式组件:XXX

scala - 如何在对RDD中找到最大值?

scala - 什么功能技术使得不必通过功能传递配置

scala - 使用 WS 和 ScalaTest 发送 auth cookie

java - 使用 Java 将新列附加到 Spark 中的现有 CSV 文件

Scala Future `.onComplete` 函数在调用后被丢弃?

java - 玩! 2.0 应用程序启动时数据库覆盖。 (MYSQL)