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