Scala类型系统与Scala和Java互操作性详解
1. Scala类型系统
1.1 隐式类规则
在Scala中,虽然可以创建具有多个非隐式参数的隐式类,但这些类在隐式查找期间不会被使用。并且,作用域内不能有与隐式类同名的方法、成员或对象,这意味着隐式类不能是样例类。以下是一些错误示例:
object Bar
implicit class Bar(x: Int) // BAD!
val x = 5
implicit class x(y: Int) // BAD!
implicit case class Baz(x: Int) // BAD!
1.2 抽象类型
抽象类型允许定义泛型类,不过不是使用传统语法,而是在类内部命名。示例如下:
trait Container {
type A
def value: A
}
在上述代码中, type A 是抽象类型成员。我们可以实现返回 Int 类型的 value 方法:
object OnlyInt extends Container {
type A = Int
def value = 2
}
还可以对抽象类型成员应用约束,使容器只能存储 Number
Scala类型系统与Java互操作详解
超级会员免费看
订阅专栏 解锁全文
59

被折叠的 条评论
为什么被折叠?



