主要是为了解决特质的循环依赖问题,同时可以确保特质在不扩展某个类的情况下,依然可以做到限制混入该特质的类的类型。
1、自身类型案例一
//自身类型特质
trait Logger11{
this: Exception =>
def log(): Unit ={
println(getMessage)
}
}
2、自身类型案例二
class Outter{
outter =>
val a = 10
class Inner{
inner =>
val a = 20
def myprintln(): Unit ={
println(outter.a)
}
}
}
这样一来,在该特质中,可以随意调用“自身类型”中的各种方法