タイプが不明な変数が2つあります。変数タイプの組み合わせでパターンマッチングを実行し、それに基づいてアクションを実行します。具体的にはComparator[Any]
、タイプに基づいて2つの変数を実装して比較します。このコードは、望ましい結果を生成します。
class SomethingComparator extends util.Comparator[Any] {
override def compare(o1: Any, o2: Any) = List(o1, o2).map(_.isInstanceOf[Something]) match {
case List(true, true) => o1.asInstanceOf[Something].someInt.compareTo(o2.asInstanceOf[Something].someInt)
case List(true, false) => -1
case List(false, true) => 1
case _ => 0
}
}
map
タイプでの呼び出しとパターンの一致を直接回避し、したがって最初の一致での2つの呼び出しを回避する方法はありasInstanceOf
ますか?