2012-07-11 51 views

回答

3

不,#是一个类型投影。在你的情况下,但不起作用,因为K没有定义任何BAR类型。

trait A { 
      type T 
      def apply():T 
} 

trait MyClass[X<:A] { 
       type SomeType = X#T 
       def applySeq():Traversable[SomeType] 
} 


class AImpl extends A { 
     type T=Int 
     def apply():Int = 10 
} 

class MyClassImpl extends MyClass[AImpl] { 
     def applySeq(): Traversable[SomeType] = List(10) 
} 

基本上可以让你在MyClass里面使用A的类型T.

事实上,还有如下编译:

class MyClassImpl extends MyClass[AImpl] {def applySeq(): Traversable[Int] = List(10)} 
相关问题