2011-10-05 18 views
11

Dato il tipo alias type Cal = java.util.Calendar come si può accedere al metodo staticgetInstance? Ho provato quanto segue a Scala REPL:Come accedere ad un metodo statico Java da Scala dato un alias di tipo per quella classe risiede in

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 
        ^

Is import java.util.{Calendar => Cal} seguito da import Cal._ davvero la mia scommessa migliore?

+2

Per motivi di coerenza e di avere il tipo-alias sostituiscono completamente il tipo Credo Scala dovrebbe inoltre metodi statici accessibili attraverso di essa. –

risposta

12

Non è possibile.

Sì, import java.util.{Calendar => Cal} è davvero la soluzione migliore.

Concettualmente, i membri Scala object sono simili ai membri statici delle classi Java. Ciò potrebbe suggerire che quanto segue funzionerebbe, ma non perché non ci sono effettivamente oggetti singleton disponibili per le classi Java.

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

Immagino che potresti anche solo andare avanti e avvolgere l'intera cosa manualmente in un oggetto Cal. Si potrebbe obiettare quale sia la soluzione ** la migliore scommessa **. – agilesteel