Я пытаюсь создать экземпляр признака с помощью этого методаКак создать экземпляр признака в общем методе в scala?
val inst = new Object with MyTrait
Это хорошо работает, но я хотел бы, чтобы переместить это творение, чтобы функции генератора, то есть.
object Creator {
def create[T] : T = new Object with T
}
Я, очевидно, буду нуждаться в манифесте, чтобы как-то исправить проблемы типа стирания, но прежде, чем я доберусь до этого, я бег на 2 вопрос:
Даже с неявным манифестом , Scala все еще требует, чтобы T был признаком. Как добавить ограничение для создания [T], чтобы T был признаком?
Если я решил использовать метод Class.newInstance для создания экземпляра динамически, а не с помощью «нового», как бы указать «с» в «новом объекте с T»? Можно ли динамически создавать новые типы бетонных смесей во время выполнения?
Это, кажется, интересное ограничение языка, но я не вижу причины, почему его нельзя было установить с помощью новой поддержки динамического микширования в Scala. Код признака уже доступен как статические методы, поэтому поиск в линеаризации может быть вычислен во время выполнения, а не запечен в байт-коде класса. Тогда вам просто нужно добавить проверку типа времени выполнения, так что «asInstanceOf» работает. – ACyclic