2015-10-27 61 views
1

我有一个同伴对象下列情况下类:同伴对象的类型别名

case class A(boo:String) 
object A{ 
def foo(x:a) = ... 
} 

而且我有以下类型别名在我的包对象:

type NewA = A 

我希望所有的方法在伴侣对象中处于NewA的伴侣对象中。我知道这样做的一种方式,但它不是很好:

object NewA{ 
    val instance = A 
} 
NewA.instance.foo(...) 

有没有什么方法可以用更好的方式写出来?

回答

8

只需添加一个val以引用A您的包对象:

package object your_package { 
    type NewA = A 
    val NewA = A 
} 

然后你可以使用NewAyour_package就像你会使用A

import your_package.NewA 

NewA.foo(...) 
0

你可以使用隐式转换为NewA转化为A

implicit convertNewA2A(newA: NewA.type) = A 

NewA.foo(...) 

此外,也可以因素A方法伸到从两个同伴对象扩展特性。