estoy tratando de crear una instancia de un rasgo utilizando este método¿Cómo creo una instancia de un rasgo en un método genérico en scala?
val inst = new Object with MyTrait
Esto funciona bien, pero me gustaría pasar esta creación de una función de generador, es decir.
object Creator {
def create[T] : T = new Object with T
}
Obviamente estoy va a necesitar el manifiesto para fijar de alguna manera los problemas de tipo de borrado, pero antes de llegar a esto, correr a 2 preguntas:
Incluso con un manifiesto implícita , Scala todavía exige que T sea un rasgo. ¿Cómo agrego una restricción para crear [T] para que T sea un rasgo?
Si he optado por utilizar el método Class.newInstance para crear la instancia de forma dinámica en lugar de utilizar "nueva", ¿cómo voy a especificar el "con" en el "nuevo objeto con T"? ¿Es posible crear dinámicamente nuevos tipos de mezclas de hormigón en tiempo de ejecución?
Esto parece ser una limitación interesante del lenguaje, pero no veo una razón por la que no se pueda solucionar con un nuevo soporte de mixin "Dinámico" en Scala. El código de característica ya está disponible como métodos estáticos, por lo que la búsqueda de linealización podría calcularse en tiempo de ejecución en lugar de procesarse en el código de clase bytecode. Entonces solo necesitarías agregar la verificación del tipo de tiempo de ejecución para que funcione "asInstanceOf". – ACyclic