Не может найти манифест класса для типа элемента T

пытался скомпилировать некоторый код из этого вопроса SO и запустить это сообщение об ошибке cannot find class manifest for element type T. Вот еще один фрагмент, который показывает поведение:

scala> def f[T](a:T, b:T):Array[T] = { new Array[T](2) }
<console>:4: error: cannot find class manifest for element type T
       def f[T](a:T, b:T):Array[T] = { new Array[T](2) }

Я вижу, что new collection.mutable.GenericArray[T](2) исправляет проблему. По-видимому, предоставление манифеста - это другой вариант... Но что означает "предоставление явного знака"?

Ответы

Ответ 1

Чтобы предоставить информацию о типе, вы можете использовать привязку к контексту

def f[T : Manifest](a:T, b:T):Array[T] = { new Array[T](2) }

или манифест как неявный аргумент:

def f[T](a:T, b:T)(implicit manifest : Manifest[T]) : Array[T] = { new Array[T](2) }

Первый - синтаксический сахар для более позднего. manifest необходимо, потому что информация о типе о Т отсутствует из-за общего type unasure JVM.