//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")
В приведенном выше коде клиентский сайт "забыл" указать параметр типа, поскольку автор API, я хочу, чтобы означать "просто вернуть узел". Есть ли способ определить общий метод (не класс) для достижения этого (или эквивалент). Примечание: использование манифеста внутри реализации для приведения типов if (manifest! = Scala.reflect.Manifest.Nothing) не будет компилироваться ... У меня неприятное ощущение, что какой-то мастер Scala знает, как использовать Predef. <: < для этого: -)
Идеи?