前段时间我读到了关于Scala for LLVM的问题,我一直想知道Scala语言/规范/库中的哪些内容只是为了让JVM满意或改进与Java的互操作.
考虑到在LLVM上运行Scala提供了更多的自由,并且计划是移植语言(而不是围绕它的整个Java生态系统)哪些功能在那里没有意义?
指导:我想知道的事情,如Object#finalize监视器的东西(notify,wait),clone与Cloneable,没有64位数组索引,集合大小限制为32位java.lang.String,Java反射,...
我想知道,如果Scala不(必须)遵循Java java.io.Serializable/ java.lang.Cloneable(主要是为了与Java及其周围的工具/生态系统保持兼容),这些功能会有多么不同(以及实现有多么不同).
由于Scala在语言设计方面更简单,但实现了更强大的实现和抽象可能性,因此可以想象Scala可能采用与Java不同的路径,如果它不必承担Java兼容性负担.
我可以想象一个惯用的实现会使用类型类或特性与(可能)私有字段/方法(在Java接口中不可能吗?),可能带有一些标准实现?
或者标记接口仍然是Scala的正确选择?