【发布时间】:2015-03-28 10:36:27
【问题描述】:
正如我所见,String 和 Long 等原始类型无法扩展,因为它们被定义为 final。但这对于类型安全的方法来说是一个遗憾。在不围绕例如字符串操作,我更喜欢键入我的数据而不是使用 String、Long、Int 等:只要我使用类型安全的语言,我希望我的代码真正从头开始键入。
根据实验和as demonstrated on a very old question 类型别名似乎并不能促进这一点。目前,我将使用以下内容:
case class DomainType(value: String)
以必须在需要值的地方使用.value 为代价。
在 scala 2.8 或其他版本之后是否引入了任何其他语言功能,可以巧妙地促进类型安全的子类型化原语?是否有任何对象覆盖可以代理底层值,但仍然让类型匹配发生?
【问题讨论】:
-
完全同意。实际上它比
.value样板文件更糟糕。我的意思是DomainType不能用在String可能的情况下,你应该重新实现json/sql序列化器/反序列化器等。
标签: scala