2011-10-05 27 views
11

Dado el tipo de alias type Cal = java.util.Calendar ¿cómo se puede acceder al método staticgetInstance? He intentado lo siguiente en Scala REPL:Cómo acceder a un método Java estático de Scala dado un alias de tipo para esa clase que reside en

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 
        ^

Está import java.util.{Calendar => Cal} seguido por import Cal._ realmente mi mejor apuesta?

+2

En aras de la coherencia y para que el alias tipo sustituya por completo al tipo, creo que Scala también debe hacer accesibles los métodos estáticos a través de él. –

Respuesta

12

No puede.

Sí, import java.util.{Calendar => Cal} es realmente su mejor opción.

Conceptualmente, los miembros de Scala object son similares a los miembros estáticos de las clases de Java. Esto podría sugerir que lo siguiente funcionaría, pero no lo hace, ya que en realidad no hay objetos únicos disponibles para las clases de Java.

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

Supongo que también podría continuar y envolver todo el contenido manualmente en un 'objeto Cal'. Uno podría argumentar qué solución es ** la mejor apuesta **. – agilesteel

Cuestiones relacionadas