获取自定义Scala对象的类

时间:2016-12-03 19:20:06

标签: scala

我创建了一个名为square的类,扩展了一个名为shape的抽象类。当我在广场上打电话给getClass时,我得到:A $ A101 $ A $ A101 $平方而不是正方形。

我想调用getClass(或类似的函数)并接收一个允许我检查o:Object == square的值。

任何建议表示赞赏。谢谢

1 个答案:

答案 0 :(得分:2)

getClass不是您经常需要的东西。您可以使用更好的抽象查询对象的类型,例如isInstanceOfpattern 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
     |   }
     | }