estoy tratando de poner en práctica un rasgo Scala que se encarga de los detalles de la interfaz con una biblioteca de Java que nos obliga a crear¿Cómo consigo la clase en tiempo de ejecución de un tipo parametrizado en un rasgo Scala
Lo que quiero hacer es algo como:
trait SomeTrait[A] extends JavaAPI {
def foo = {
callApi(classOf[A])
}
override def bar = {
foo
}
}
Tenga en cuenta que la barra es en realidad sustituir un método de una clase base, por lo que no puede cambiar su firma.
He intentado varias variaciones con Manifests, etc., pero no puedo hacer que esto funcione. ¿Hay alguna manera de obtener la clase de tiempo de ejecución de un tipo parametrizado?
Esto está cerca, pero necesito llamar a foo() desde dentro del rasgo. Cuando intento eso con este enfoque, aparece un error de compilación: "no se pudo encontrar el valor implícito para el parámetro ev: Manifiesto [A]. He actualizado mi ejemplo para reflejar la especificación (más precisa) –
' ev.erasure' está en desuso. Ahora debería usar 'ev.runtimeClass'. – wizulus