//API
class Node
class Person extends Node
object Finder
{
def find[T <: Node](name: String): T = doFind(name).asInstanceOf[T]
}
//Call site (correct)
val person = find[Person]("joe")
//Call site (dies with a ClassCast inside b/c inferred type is Nothing)
val person = find("joe")
En el código anterior el sitio del cliente "se olvidó" para especificar el tipo de parámetro, como el escritor API que quiere que significa "simplemente volver nodo". ¿Hay alguna manera de definir un método genérico (no una clase) para lograr esto (o su equivalente)? Nota: usar un manifiesto dentro de la implementación para hacer el reparto if (manifest! = Scala.reflect.Manifest.Nothing) no se compilará ... Tengo la sensación de que algún Scala Wizard sabe cómo usar Predef. <: < para esto :-)¿Es posible en Scala obligar al llamante a especificar un parámetro de tipo para un método polimórfico?
Ideas?
@Ben, thx para su corrección a mi mensaje inicial descuidado :-) –