En un entorno Scala pura, podría hacer lo siguiente si quería "añadir" un método de fábrica a un objeto existente:¿Cómo añadir un método de fábrica a una clase Java existente en Scala
object Test
object Extensions {
object RichTest {
def someFactory = new Test()
}
implicit def fromTest(t: Test.type) = RichTest
}
...
import Extensions._
val t = Test.someFactory
I necesitaría tal funcionalidad en combinación con una clase Java existente. En mi ejemplo concreto, me gustaría agregar un método de fábrica fromLocation
a la clase com.google.android.maps.GeoPoint
(y supongo que cada desarrollador de Android sabrá por qué sería útil ;-)).
Sin embargo, si trato de hacer algo como
implicit def fromGeoPoint(t: GeoPoint.type) = RichTest
me sale un error que indica
coincidencia de tipos; encontrado: com.google.android.maps.GeoPoint.type (con tipo de objeto com.google.android.maps.GeoPoint subyacente) requerido: AnyRef
así que me pregunto si hay alguna manera de cómo el enfoque anterior podría ser implementado - o proporcionar una conversión implícita de Location
a GeoPoint
ser la forma preferida en Scala para que se pueda usar Location
siempre que se requiera GeoPoint
?
a lo solicitado en los comentarios, un escenario de uso:
// 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, ...)
....
}
Sin embargo, tenga en cuenta que esto es sólo un ejemplo específico para el problema general ;-)
¿Podría dar un ejemplo de código que usaría este método de fábrica? Por ejemplo, con GeoPoints y ubicaciones. Realmente no entiendo esta pregunta. – Fixpoint
@Fixpoint hecho ;-) – Leo