何がしたいのかよくわからないんだけど。case classをなんとなく眺めてみた。
eqはAnyRefのメソッドで、case classに備わっていないので、普通にoverrideしてもエラーになる
http://www.scala-lang.org/api/current/index.html#scala.AnyRef
scala> case class A1(id: Int, name: String); val a1 = A1; val a2 = A1; a1 eq a2 defined class A1 a1: A1.type = A1 a2: A1.type = A1 res4: Boolean = true scala> case class A1(id: Int, name: String) { | def eq(a: Int): Boolean = a == id | } defined class A1 scala> case class A1(id: Int, name: String) { | override def eq(a: Int): Boolean = a == id | } <console>:11: error: method eq overrides nothing override def eq(a: Int): Boolean = a == id ^
というか、考えてみると、eqを定義してもAnyRefのeqが呼ばれるので、結構つらいことになるのだった。