- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们都熟悉 argument关于为什么String
在 java 中是最终的。
但是,我想知道为什么 javaslang 的 CharSeq也是最终的。
鉴于 javaslang 的 FP 灵感以及 Haskell 允许的事实 type synonyms ,我本以为这将是一个很好的机会来制作 CharSeq
非最终的,可能方法是最终的。
非最终版 CharSeq
然后,我可以用空的主体来扩展它,以创建类型同义词的良好近似值。这将避免 tiny type 的样板。需要额外类型安全的情况的模式。
我确信这不是设计的原因,这就是我在这里问的原因。
更新于 2016 年 12 月 16 日:我已向 github 上的 javaslang 团队提出了增强请求,问题为问题 #1764 。
最佳答案
所有支持和反对的理由都相同。
Java 的设计者认为,保证不变性值得失去子类化的能力。
Slang 的设计者对此表示同意,并对他们的“String”、CharSeq
采用了相同的方法。
不同意此设计的唯一内部一致的方式就是不同意 String
的设计,该设计经受了时间的考验。
有时我们希望能够继承 String 的子类,但我们不能——但这并不经常让我们感到困扰。如果您确实愿意,可以编写自己的 String
来将所有方法代理到 java.lang.String
委托(delegate)。您可以根据需要对其进行子类化。您自己有责任不引入可变性。
关于java - 为什么 javaslang CharSeq 是最终的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187662/
我还在学习 Javaslang/Vavr,所以请原谅我的无知。我正在处理的项目停留在 Javaslang 2.1.0 上。 我的问题:是否有一种更“功能”的方式(而不是命令式风格)来构建我的代码,以便
我正在使用 Javaslang-2.1.0-alpha 和它的 Javaslang-match 来做一些对象分解。根据 this by blog Daniel 在“Match the Fancy wa
我有多个带有我创建的限定符的类: @ServiceComponent(restPath = "/trucks") public class TruckService { } @Serv
我目前正在查看 Javaslang 库,并且正在尝试将我的一些代码转换为 Javaslang。 我目前有这段代码,全是纯 Java Cell[][] maze; //from input Map ce
是否有一种简洁、惯用的方法来从 Javaslang/Vavr List 创建顺序保留映射? List.toMap() 返回一个普通的 HashMap,所以这并不能实现。我现在拥有的是这样的东西—— l
我们都熟悉 argument关于为什么String在 java 中是最终的。 但是,我想知道为什么 javaslang 的 CharSeq也是最终的。 鉴于 javaslang 的 FP 灵感以及 H
在 javaslang 中,如果我有 Stream ,当流中的任何项目包含已检查的异常时,我该如何抛出?我不能这样做,因为 peek 不接受抛出 lambda stream.peek(t -> t.o
这是我的代码片段: public static void main(String[] args) { Try.of(Main::getLines) .onFailur
我试图捕获特定的运行时异常(因此不可抛出)并记录它(log.error 具有 void 返回类型)。在 vavr 中执行此操作的最简单方法是什么? try { sayHello(); } ca
我有spring data JPA应用程序,我想使用jmh对应用程序进行基准测试。 我正在使用gradle构建工具,并为此使用gradle-jmh-plugin。 我的github仓库是here。 我
我是一名优秀的程序员,十分优秀!