如何设置AnyRef的类型边界以使其仅成为案例类

时间:2018-08-02 10:06:41

标签: scala scala-generics

假设我有一些案例类

case class Foo(i: Int)
case class Bar(s: String)

我想定义一些将A:AnyRef作为参数的函数。 但!我想用以下方法设置边界:

  1. A是AnyRef,但不是对象
  2. A是AnyRef,但仅适用于案例类

类似的东西

def caseClassProcessor [A](A:AnyRef <:一定范围)= ???

def notObjectProcessor [A](A:AnyRef!Object)= ???

有可能吗?

1 个答案:

答案 0 :(得分:0)

也许这个例子就是您所需要的:

case class Foo(int: Int)
case class Bar(string: String)

def foo[A](arg: A) = arg match {
  case Foo(int)    => ...
  case Bar(string) => ...
  case _           => ...
}