Ich muss eine Musterübereinstimmung auf Klassen tun. Das Problem ist, dass ich einige Probleme mit einem Long habe.Scala: Wie Muster übereinstimmen scala.Long und java.lang.Long
Ich muss scala.Long und java.lang.Long in der gleichen Weise behandeln, aber warum muss ich sie beide in Fällen erklären? Hier
ein Beispiel:
def test(typ: Class[_]) {
typ match {
case q if q == classOf[Long] => println("scala long...")
}
}
val scalaLongField: java.reflect.Field = ......
val javaLongField: java.reflect.Field = ......
test(scalaLongField.getType) // prints "scala long..."
test(javaLongField.getType) // scala.MatchError: class java.lang.Long (of class java.lang.Class)
Gibt es einen Weg, um sie gleich zu behandeln, ohne eine Instanz, die aber nur die Klasse?
Nur wenn ich den Wert habe! Ich brauche das, um zu funktionieren, wenn ich nur die Klasse habe, wie ich in der Frage gesagt habe: "Gibt es einen Weg, sie gleich zu behandeln, ohne eine Instanz zu haben, sondern nur die Klasse?" – maklemenz
@mklemenz Sie würden gut bedient, um Ihre Beispiele auf genau das zu beschränken, was Sie wollen. Die Mehrheit (2/3) Ihrer Beispielmethoden haben den Wert, nur einer hat nur die Klasse. –
Ich habe die Frage bearbeitet – maklemenz