Интересно, не могли бы вы написать что-то вроде следующего в Scala:
abstract class Foo trait Bar { type Foo_Tpe <: Foo : Manifest[Foo_Tpe] def fooClass = classOf[Foo_Tpe] }
Да и нет. Вы можете сделать это:
val man = manifest[Foo_Tpe]
В этот момент он скажет вам, что у него нет манифеста для этого.
Нет, но вы можете попросить подкласс предоставить его:
trait Bar { type Foo_Tpe <: Foo protected def fooManifest: Manifest[Foo_Tpe] def fooClass = fooManifest.erasure }