2016-12-03 4 views
2

私は、squareと呼ばれるクラスを作成して、shapeという抽象クラスを拡張します。正方形でgetClassを呼び出すと、正方形ではなくクラスA $ A101 $ A $ A101 $が得られます。カスタムスカラオブジェクトのクラスを取得

getClass(または同様の関数)を呼び出して、o:Object == squareかどうかを確認できる値を受け取りたいとします。

アドバイスありがとうございます。ありがとう

+0

99.9%getClass'はひどいアイデアです '使用します。あなたが実際にやろうとしていることは何ですか? –

+0

@MrD基本的に私はオブジェクトを取ることができるメソッドを記述しようとしていますが、オブジェクトの指定されたセットではないものは無視してください。私はScalaの新機能ですので、$ squareの前に何らかのポインタを戻していると思いますか?助けてくれてありがとう。 –

+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 
    | } 
    | } 
+0

ありがとう、ちょうど私が必要なものです。 –