【发布时间】:2023-02-13 15:32:17
【问题描述】:
我有一个包含 100 个不同案例类的单例对象。例如:
object Foo {
case class Bar1 {
...
}
...
case class Bar100 {
...
}
}
我希望能够遍历每个案例类。 类似于在 Seq 中获取所有案例类,然后能够映射到它。 (例如具有多态函数的映射)
是否可以使用反射?如果是如何?与使用所有案例类对序列进行硬编码相比,在这里使用反射的缺点是什么。
【问题讨论】:
-
> “与使用所有案例类对序列进行硬编码相比,在这里使用反射的缺点是什么。”您错过了类型安全、编译警告和相对较慢的代码。如果案例类之间有相似的功能,那么最好创建特征并对它们使用模式匹配。
-
反射的另一个缺点:如果出于任何原因需要进行字节码混淆,则需要配置一条规则以不重命名这些类,否则基于反射的逻辑将被破坏。
-
@MikhailIonkin“你想念类型安全……”也许通过反射 OP 意味着运行时反射,但除了 Scala 中的运行时反射之外,还有编译时反射,这并不缺少类型安全。
标签: scala generics reflection polymorphic-functions