Как получить доступ к статическому методу Java из Scala, учитывая псевдоним типа для того класса, в котором он находится

Учитывая псевдоним типа 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._ моим лучшим выбором?


person Tim Friske    schedule 05.10.2011    source источник
comment
Для согласованности и для того, чтобы псевдоним типа полностью заменял тип, я думаю, что Scala также должна сделать статические методы доступными через него.   -  person Tim Friske    schedule 07.10.2011


Ответы (1)


Вы не можете.

Да, import java.util.{Calendar => Cal} действительно ваш лучший выбор.

Концептуально члены Scala object похожи на статические члены классов Java. Это может означать, что следующее будет работать, но это не так, поскольку на самом деле нет одноэлементных объектов, доступных для классов Java.

scala> val Cal = java.util.Calendar
<console>:13: error: object Calendar is not a value
       val Cal = java.util.Calendar
                           ^
person missingfaktor    schedule 05.10.2011
comment
Я думаю, вы также можете просто пойти дальше и вручную обернуть все это в файл object Cal. Можно спорить, какое решение является наилучшим. - person agilesteel; 06.10.2011