我的问题主要是关于 Scala 的,但由于最终它仍然使用具有其特性的 JVM,所以我也放置了java
标签。
我使用参数化类型的次数越多,出现上述问题的次数就越多。类型擦除带来了很多不便(模式匹配case x: A[B]
变得不可能等等),并且有相当繁重的基于运行时反射的解决方法涉及在运行时携带类型信息的额外对象,所以我(从我的用户的角度来看,只是简单好奇心)想知道是什么决定导致了这片土地目前的谎言。
携带完整类型到运行时信息是否过于复杂?或者也许它没有那么多用例,所以它不只是经常需要?无论如何,类型擦除的优缺点是什么?
编辑:我想有一些关于该主题的合格讨论、论文或帖子等,我希望答案在理论上得到支持或至少包含某种 CS 推测,而不仅仅是“运行时类型是一种不好的做法” . 这不是关于你是否确实遇到过问题的问题——而是关于导致决定的 CS 基础。