Ich habe meine Java-Enumeration wie: FOO("foo")
, BAR("bar")
... und ich habe eine getValue()
Methode den Wert "foo"
und "bar"
der Enumeration zurück, und dies hat in Java sein.Scala Pattern-Matching-Java Enum-Wert
Auf der anderen Seite, ich habe dies in Scala entsprechen:
result match {
case "foo" =>
ich zu tun versucht:
result match {
case Enum.FOO.getValue() =>
ich diesen Fehler:
method getValue is not a case class constructor, nor does it have an
unapply/unapplySeq method
I bin mir nicht ganz sicher, was hier passiert, seit meine getValue()
methode eine String
zurückgibt, also warum ich sie nicht benutzen kann r Mustererkennung? Danke
Wenn dies eine Enumeration ist, warum nur den Fall auf der ENUM nicht Werte selbst statt ihrer „String-Darstellung“ ? Andernfalls könnten Sie immer eine "Reverse-Lookup" -Methode erstellen, die den enum-Wert aus der Zeichenfolgendarstellung zurückgibt. – fge
Das Ergebnis stammt von der DB und ist vom Typ String und entspricht der Zeichenfolge rep des Enums. Ich versuche, den String-Wert hier zu finden, also glaube ich nicht, dass ein Reverse-Lookup funktionieren würde, oder? Kannst du mir bitte ein Beispiel zeigen? Prost – Duc
Halten Sie an.In Ihrem Scala-Code ist 'match' ein' String'. So weit, ist es gut. Welche Behandlung wird in jedem Fall benötigt? Kann es nicht eine Methodenimplementierung im Enum selbst sein? – fge