Esiste un modo elegante per convertire java.time.Duration
in scala.concurrent.duration.FiniteDuration
?Conversione di durate Java in scala
io sto cercando di fare la seguente semplice utilizzo di Config in Scala:
val d = ConfigFactory.load().getDuration("application.someTimeout")
Tuttavia non vedo alcun modo semplice per utilizzare il risultato a Scala. speranza Certamente la buona gente di Typesafe non si aspettavano che io faccia questo:
FiniteDuration(d.getNano, TimeUnit.NANOSECONDS)
Edit: Si noti la linea ha un bug, il che dimostra il punto. Vedi la risposta selezionata sotto.
Cosa c'è di sbagliato con la soluzione indicata? Questo è facile e comprensibile. Avvolgilo in una funzione/crea una conversione implicita se non è abbastanza breve per te. – sschaef
@sschaef il bit fastidioso è una supposta libreria "scala-friendly" per sputare i tipi Java, ma questa non è una cosa nuova quando si parla di Config. –
Typesafe Config sta servendo sia i client Java che i programmi Scala, in base alla definizione del progetto. Sono d'accordo sul fatto che dover utilizzare una conversione implicita è un po 'sorprendente. Lo copro all'interno del singleton MyConfig, quindi il codice dell'applicazione non avrà mai bisogno di sapere. Non si dovrebbero cospargere gli accessi di configurazione Typesafe non elaborati nel codice a livello di applicazione. – akauppi