scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> val sortMethod = typeOf[::[_]].member(newTermName("sorted")).asMethod
sortMethod: reflect.runtime.universe.MethodSymbol = method sorted
scala> sortMethod.params // `params` has been added only a few days ago
res0: List[List[reflect.runtime.universe.Symbol]] = List(List(value ord))
scala> sortMethod.params(0)(0).asTerm.isImplicit
res2: Boolean = true
scala> sortMethod.params(0)(0) hasFlag Flag.IMPLICIT
res3: Boolean = true
如果您问我喜欢哪种方式,我建议您使用isXXX
方法。首先,这是一种一致的测试方式,因为只有十几个公共标志,但要测试的东西要多得多(例如isStable
or isSynthetic
)。其次,标志比它们看起来更复杂(例如,几个标志名称可能对应于标志掩码中的同一位),因此isXXX
方法提供了更好的封装。