consideran este código:¿Por qué el Manifiesto no está disponible en el constructor?
class Foo[T : Manifest](val id: String = manifest[T].erasure.getName)
Básicamente quiero para almacenar un identificador en Foo, que a menudo es sólo el nombre de la clase.
La subclase que no necesita un identificador especial podría fácilmente usar el valor predeterminado.
Pero esto ni siquiera compilar, el mensaje de error es:
error: No Manifest available for T.
¿Hay otro enfoque que funcionará?
EDIT:
¿Por qué este trabajo si el manifiesto no está disponible hasta el constructor principal?
class Foo[T: Manifest](val name: String) {
def this() = this(manifest[T].erasure.getName)
}
No es una respuesta, pero tendrá un código mucho más limpio si utiliza 'manifest [T]' en lugar de 'implícitamente [Manife st [T]] '. –