问题 如何从Scala访问Java静态方法,给出它所驻留的类的别名


给定类型别名 type Cal = java.util.Calendar 怎么可以 static  getInstance 方法被访问?我在Scala REPL中尝试了以下内容:

scala> type Cal = java.util.Calendar
defined type alias Cal
scala> Cal.getInstance
<console>:8: error: not found: value Cal
          Cal.getInstance
          ^
scala> val Cal = java.util.Calendar
<console>:7: error: object Calendar is not a value
   val Cal = java.util.Calendar
                       ^

import java.util.{Calendar => Cal} 其次是 import Cal._ 真的是我最好的选择?


12496
2017-10-05 21:58


起源

为了保持一致性并使类型别名完全替换类型我认为Scala还应该通过它来访问静态方法。 - Tim Friske


答案:


你不能。

是, import java.util.{Calendar => Cal} 真的是你最好的选择。

从概念上讲,斯卡拉 object 成员类似于Java类的静态成员。这可能表明以下方法可行,但事实并非如此,因为实际上没有可用于Java类的单例对象。

scala> val Cal = java.util.Calendar
<console>:13: error: object Calendar is not a value
       val Cal = java.util.Calendar
                           ^

12
2017-10-05 22:22



我想你也可以继续手动将整个东西包裹起来 object Cal。有人可能会争论解决方案是什么 最好的选择。 - agilesteel