为什么类型擦除概念如此广泛使用?

时间:2013-09-08 14:09:23

标签: java scala

我的问题主要是关于Scala,但是最后它仍然使用JVM的特性,我也放了java标签。

我使用参数化类型越多,上述问题就越频繁出现。类型擦除带来了很多不便(像case x: A[B]这样的模式匹配变得不可能等等)并且存在相当繁重的基于运行时反射的变通方法,涉及在运行时携带类型信息的额外对象,所以我(从我的用户点开始)只是好奇的好奇心,想知道什么决定导致了当前的土地谎言。

到处运行完整类型到运行时信息太复杂了?或者可能没有那么多用例,所以它不仅仅是经常被需要?无论如何,类型擦除的利弊是什么?

编辑:我认为有关于这个主题的一些合格的讨论,论文或帖子等,我希望答案在理论上得到支持,或者至少包含某种CS推测,而不仅仅是“运行时类型是一种不好的做法“。这是关于你是否确实遇到过问题的问题 - 这是关于导致决定的CS基础。

1 个答案:

答案 0 :(得分:4)

  

到处运行完整类型到运行时信息太复杂了?

这是为了向后兼容,而不是为了降低复杂性。

  

或者可能没有那么多用例,所以它不仅仅是经常被需要?

经常不需要它,但在需要时会让人感到困惑。

  

无论如何,类型擦除的利弊是什么?

鉴于这是自2004年以来的状况,我怀疑这无关紧要,因为无论利弊是什么,它都不会发生重大变化。有一个名义上的计划来解决这个问题,但它不是高优先级,可能不会进入Java 9。