не может найти декларацию класса для типа T элемента

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

scala> def f[T](a:T, b:T):Array[T] = { new Array[T](2) }
: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) устраняет проблему. По-видимому, обеспечение декларации является другой опцией... Но что делает "обеспечение средней декларации"?

17
задан Community 23 May 2017 в 12:13
поделиться

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) }

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

19
ответ дан 30 November 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: