Gibt es eine elegante Möglichkeit, java.time.Duration
in scala.concurrent.duration.FiniteDuration
zu konvertieren?Konvertieren von Java in Scala-Dauern
Ich versuche, die folgende einfache Verwendung von Config in Scala zu tun:
val d = ConfigFactory.load().getDuration("application.someTimeout")
Allerdings kann ich keine einfache Art und Weise sehen das Ergebnis in Scala zu verwenden. hoffen natürlich die gut Leute von Typesafe nicht erwarten, dass mir dies tun:
FiniteDuration(d.getNano, TimeUnit.NANOSECONDS)
Edit: Beachten Sie die Zeile einen Fehler hat, die den Punkt beweist. Siehe die ausgewählte Antwort unten.
Was ist mit der gezeigten Lösung ist falsch? Dies ist einfach und verständlich. Wickeln Sie es in eine Funktion/erstellen Sie eine implizite Konvertierung, wenn es nicht kurz genug für Sie ist. – sschaef
@sschaef das störende Bit ist eine angebliche "scala-freundliche" Bibliothek, um Java-Typen auszuspucken, aber das ist keine neue Sache, wenn man von Config spricht. –
Typesafe Config bedient sowohl Java als auch Scala Clients nach seiner Projektdefinition. Ich stimme zu, dass die Verwendung einer impliziten Konvertierung ein wenig überraschend ist. Ich behandle dies innerhalb des MyConfig-Singleton, so dass der Anwendungscode dies niemals wissen muss. Raw TypeSafe Config-Zugriffe sollten nicht in Code der Anwendungsebene gestreut werden. – akauppi