我创建了一个名为square的类,扩展了一个名为shape的抽象类。当我在广场上打电话给getClass时,我得到:A $ A101 $ A $ A101 $平方而不是正方形。
我想调用getClass(或类似的函数)并接收一个允许我检查o:Object == square的值。
任何建议表示赞赏。谢谢
答案 0 :(得分:2)
getClass
不是您经常需要的东西。您可以使用更好的抽象查询对象的类型,例如isInstanceOf
或pattern matching。
这是一些REPL:
scala> abstract class Shape
defined class Shape
scala> class Square extends Shape
defined class Square
scala> class Circle extends Shape
defined class Circle
scala> def isSquare(s: Shape): Boolean = s.isInstanceOf[Square]
isSquare: (s: Shape)Boolean
scala> isSquare(new Circle)
res4: Boolean = false
scala> isSquare(new Square)
res5: Boolean = true
这是另一种写isSquare
的方式:
scala> def isSquare(s: Shape): Boolean = {
| s match {
| case sq: Square => true
| case _ => false
| }
| }