Рассмотрим этот код:
class Foo[T : Manifest](val id: String = manifest[T].erasure.getName)
Я в основном хочу сохранить идентификатор в Foo, который часто является просто именем класса.
Подкласс, который не нуждается в специальном идентификаторе, может легко использовать значение по умолчанию.
Но это даже не компилируется, сообщение об ошибке:
error: No Manifest available for T.
Есть ли другой подход, который будет работать?
EDIT:
Почему это работает, если манифест недоступен до основного конструктора?
class Foo[T: Manifest](val name: String) {
def this() = this(manifest[T].erasure.getName)
}