scala.Einige können nicht gewirkt werden, um java.lang.String
In dieser Anwendung, ich bin immer diese Fehlermeldung:
scala.Some cannot be cast to java.lang.String
Wenn Sie versuchen, diese:
x.email.asInstanceOf[String]
x.E-Mail ist eine Option[String]
Edit: ich verstehe, dass ich den Umgang mit verschiedenen Arten hier, ich wollte Fragen, ob es einen kürzeren Weg zu tun, nichts mit Keine dann einen
match { case....}
Sequenz. Weil ich bin casting-x.E-Mail in einen JSON-String für die Zwecke, ein null-Feld bearbeitet werden, werden durch das JSON-Objekt, und ich nicht explizit haben, damit umzugehen. Sorry für unklar zu sein!!
- Einfache Antwort ist, verwenden Sie die
foreach
Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es ist klar, dass Sie aus den Fehlern und Typen, die
x.email
ist nicht einString
...Entscheiden Sie zunächst, wie Sie damit umgehen wollen
None
(eine gültige option für etwasOption[String]
). Sie haben dann eine Reihe von Optionen, einschließlich, aber nicht beschränkt auf:Abwechselnd, werfen Sie einen Blick auf die
get
undgetOrElse
Methoden aufclass Option
.Wenn Sie möchten, zu "degradieren" die option, um eine Zeichenfolge mit einer möglichen
null
Wert, dann verwenden SieSchließlich, wenn Sie nur don ' T Pflege über die
None
Fall ist (und ignorieren wollen), dann benutzen Sie einfach eine einfache "für das Verständnis", das "überspringen" der Körper in derNone
Fall:orNull
stattgetOrElse(null)
.orNull
funktioniert nicht immer. Ich habe gerade versuchtjava.lang.Integer
stattjava.lang.String
und dann die Zusammenstellung fürorNull
schlägt mitCannot prove that Null <:< Int.
Casting ist nicht, wie Sie suchen sollte, bei Umbauten wenn es kommt zu Möglichkeiten. Haben Sie einen Blick auf die folgende REPL-Sitzung:
Möglicherweise möchten Sie auch zu schauen, diese Frage ALSO: Was ist der Punkt, der die Klasse Option[T]?
und die Optionen API hier
Generell casting/Nötigung sind Art Tabu in der rp-Welt. 🙂
Möchten Sie vielleicht verwenden Sie pattern-matching: