2017-10-25 3 views
1

Wie kann ich herausfinden, ob fruitBasket enthält Orange in REPL?So finden Sie die Laufzeitinstanz eines Objekts?

class MyContainer[+A](val a: A) 
class Fruit 
class Orange extends Fruit 
val fruitBasket: MyContainer[Fruit] = new MyContainer[Orange](new Orange()) 

Im Allgemeinen, wenn ich eine Unterklasse Objekt o eine übergeordnete Klasse Variablen zuweisen, wie kann ich überprüfen/print die Common Language Runtime Instanz der Variablen?

+0

Ich denke, ist vielleicht Duplikat diese Frage? https://stackoverflow.com/questions/19386964/i-want-to-get-the-type-of-a-variable-at-runtime –

Antwort

0

Der Typ in eine Frucht dazu gezwungen worden ist, aber Sie können auf den Inhalt Mustervergleich:

scala> fruitBasket 
res11: MyContainer[Fruit] = [email protected] 

scala> fruitBasket.a 
res12: Fruit = [email protected] 

scala> fruitBasket.a match { 
     case o: Orange => println("orange") 
     case _ => println("not orange") 
     } 
orange 

Sie sich mit der getClass erreichen:

scala> fruitBasket.a.getClass 
res21: Class[_ <: Fruit] = class Orange 

scala> fruitBasket.a.getClass.toString 
res22: String = class Orange 
Verwandte Themen