为什么 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
委托。您可以根据需要对其进行子类化。不引入可变性是您自己的责任。
我们都熟悉 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
委托。您可以根据需要对其进行子类化。不引入可变性是您自己的责任。