4
对In scala, is there any way to check if an instance is a singleton object or not?的回答解释了如何检查一个实例是否为静态已知的为object
。换句话说,它不会对这种情况下的工作:如何检查一个值是不是静态类型的Scala单例对象?
object Obj
val x: Any = Obj
isSingleton(x)
甚至在这里:
trait Trait // not sealed
case Obj extends Trait
class Class extends Trait
val xs: Seq[Trait] = ...
xs.filter(isSingleton)
不幸的是,我想处理这个问题。有没有一个好的方法来做到这一点?或者至少比x.getClass.getName.endsWith("$")
更好?
使用'Any'是一个坏主意 – cchantep
当然,但它是你最终用,一旦你开始使用反射,这就是我需要的背景下,无论如何擦除类型的信息,我已经增加了一个更好的例子。 –
我不知道该怎么做,但我想知道这是什么用例?为什么你的情况下,如果一个实例是第一个单身人士?毕竟,它可能是一个单身人士,而不是'object' ...对象Foo {val bar = new Trait {}}'。 'bar'也是一个单身人士... – Dima