知道Scala对象是否是Case Class的实例

Tho*_*mas 4 scala typing

我想知道是否有一种方法可以知道对象是否是案例类的实例.我试图找到一些结构类型匹配unapply,我注意到他们继承Product.我真正需要一个类似于以下功能的函数:

def withCaseClass[T <: /* matcher for case class */](obj:T) ...
Run Code Online (Sandbox Code Playgroud)

我的主要兴趣是确保只有案例类可以传递给这个函数.

Dan*_*ral 7

A case class是实现细节.可以创建一个类似于案例类的类 - 并且这样做的能力是非常重要的,因为它确保如果某些特定要求使其成为更好的选择,则可以切换到普通类.


Ale*_*ise 2

案例类或元组都没有标记特征,因此恐怕您最好的选择可能是检查它是否扩展了 Product 并且不在任何以“scala.*”开头的包中。:/