有没有更好的方法来测试 Scala 中的泛型类型(没有类型参数)?

Is there a better way to test the generic type (without type arguments) in Scala?

鉴于我正在使用反射来遍历成员列表(给我 runtime.universe.Symbol),我如何在没有类型参数的情况下检查泛型类型?换句话说,无论类型参数是什么,我如何找到 List[] 泛型类型的成员?

目前我正在使用这种确实有效的方法,但我想知道是否有更好的方法:

import scala.reflect.runtime.currentMirror

// ...

val listTypeConstructor = typeOf[List[_]].typeConstructor
val myListMembers = currentMirror.reflect(MyObject)
  .symbol
  .asClass
  .typeSignature
  .members
  .filter(member => member.typeSignature.resultType.typeConstructor == listTypeConstructor)

这会生成所有 List[] 成员的 runtime.universe.Symbol 列表,包括预期的任何 List[String]List[Int] 等。

typeOf[List[_]].typeConstructor 的用法对我来说似乎有点混乱。这是执行此类过滤的最佳方法吗?

答案是否定的。我在上面的例子中的方式是标准方式。