为什么 javaslang CharSeq 是最终的?

Why is javaslang CharSeq final?

我们都熟悉 argument 为什么 String 在 java 中是最终的。

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

考虑到 javaslang 的 FP 灵感和 Haskell 允许 type synonyms 的事实,我认为这将是使 CharSeq 成为非最终版本的好机会也许方法是最终的。

非最终 CharSeq 将允许我用一个空体来扩展它以创建类型同义词的良好近似。对于需要额外类型安全的情况,这将避免 tiny type 模式的样板。

我敢肯定这不是设计的原因,这就是我在这里提问的原因。

2016 年 12 月 16 日更新:我在 github 上向 java 俚语团队提出了增强请求 #1764.

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

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

Slang 的设计者对此表示赞同,并在 "String"、CharSeq.

中采用了相同的方法

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

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