Jea*_*let 10 scala implicit-conversion scala-java-interop companion-object
我想将隐式转换添加到由建模工具生成的Java类中.所以我想将它们添加到这些类的伴随对象中,以便编译器自动找到它们.但我无法将它们添加到单独的文件中,因为必须在同一文件中定义随播广告.我能做些什么吗?
当然,我可以在另一个对象中定义所有隐式转换,然后将其带入范围,但这需要额外的导入.还有其他方法吗?
您当然可以定义自己的伴随对象,我经常在我自己的项目特定Predef
的安排中进行.例如:
object domain {
type TimeUnit = java.util.concurrent.TimeUnit
object TimeUnit {
def valueOf(s : String) = java.util.concurrent.TimeUnit.valueOf(str)
val Millis = java.util.concurrent.TimeUnit.MILLISECONDS
//etc
}
Run Code Online (Sandbox Code Playgroud)
然后可以使用:
import my.domain._
val tu : TimeUnit = TimeUnit.valueOf("MILLISECONDS")
Run Code Online (Sandbox Code Playgroud)
但你domain.TimeUnit
是一个模块(即scala object
)
使用现在的Scala编译器,除了将它们放在同一个文件中之外,无法定义伴随对象.您可以做的最好的是具有相同包和名称以及额外导入的非伴随对象.
如果你能想出一个创建事后陪伴的好方法而不打破关于封装的假设,请访问http://groups.google.com/group/scala-debate,因为它显然是一个非常有用的功能.
归档时间: |
|
查看次数: |
2227 次 |
最近记录: |