工厂方法添加到现有的Java类在纯Scala的环境中,我可以做到以下几点,如果我想一个工厂方法“添加”到现有对象:如何在斯卡拉
object Test
object Extensions {
object RichTest {
def someFactory = new Test()
}
implicit def fromTest(t: Test.type) = RichTest
}
...
import Extensions._
val t = Test.someFactory
我需要将这样的功能与现有的Java类结合使用。在我的具体例子中,我想添加一个工厂方法fromLocation
到类com.google.android.maps.GeoPoint
(我想每个Android开发人员都会知道为什么这会很有用;-))。
但是,如果我尝试做一些像
implicit def fromGeoPoint(t: GeoPoint.type) = RichTest
我得到一个错误,说明
类型不匹配;发现:com.google.android.maps.GeoPoint.type(与基础类型的对象com.google.android.maps.GeoPoint)要求:AnyRef
所以我不知道是否有任何方式上面的方法怎么可能被实现 - 或者将提供从Location
到GeoPoint
的隐式转换是Scala的首选方式,因此只要需要GeoPoint
就可以使用Location
?
的要求,在评论中,使用场景:
// Callback you get from the GPS
override def onLocationChanged(l: Location) {
// You want to put a marker on a map, hence a GeoPoint is required
val gp: GeoPoint = GeoPoint.fromLocation(location)
val item = new OverlayItem(gp, ...)
....
}
但是,请记住,这仅仅是一个
你能否举一个使用这个工厂方法的代码的例子吗?例如,使用GeoPoints和Locations。我不太了解这个问题。 – Fixpoint 2012-03-05 23:19:18
@完成点;-) – Leo 2012-03-06 11:05:58