0

我们都熟悉java 中为什么是 final的争论。String

但是,我想知道为什么 javaslang 的CharSeq也是最终的。

考虑到 javaslang 的 FP 灵感和 Haskell 允许类型同义词的事实,我原以为这将是一个很好的机会,CharSeq可以将方法设为 final。

然后,非finalCharSeq将允许我用空主体对其进行扩展,以创建类型同义词的良好近似。这将避免在需要额外类型安全的情况下使用微小类型模式的样板。

我确信这不是设计是有充分理由的,这就是我在这里问的原因。

2016 年 12 月 16 日更新:我在 github 上向 javaslang 团队提出了增强请求,问题#1764

4

1 回答 1

2

所有支持和反对的理由都适用。

Java 的设计者认为,保证不变性是值得失去子类化能力的。

俚语的设计师同意,并在他们的“字符串”中采用了相同的方法,CharSeq.

不同意这种设计的唯一内部一致的方法是不同意String的设计,它经受住了时间的考验。

有时我们希望我们可以子类化 String,但我们不能——但它并不经常刺痛我们。如果您真的愿意,您可以编写自己的String代理所有方法到java.lang.String委托。您可以根据需要对其进行子类化。不引入可变性是您自己的责任。

于 2016-12-16T16:08:08.847 回答