2012-07-03 2 views
0

Из Scala API я получил следующий пример, который не компилируется;Почему следующий параметризованный метод не компилируется?

scala> def arr[T] = new Array[T](0) 
<console>:10: error: cannot find class manifest for element type T 
     def arr[T] = new Array[T](0) 
        ^

Мне было интересно, почему это не скомпилировано (Scala API не объясняет ошибку)? Разве это не обычный параметризованный метод? Почему компилятор жалуется на это?

ответ

7

Как указано в сообщении об ошибке компилятора, вам необходимо установить ограничение Manifest.

scala> def arr[T : Manifest] = new Array[T](0) 
arr: [T](implicit evidence$1: Manifest[T])Array[T] 

Узнать больше об этом here. См. the paper для получения более подробной информации.

+0

О, я вижу, это проблема с массивом (например, 'def createList [T] = List [T]()' работает). Спасибо, я посмотрю на него глубже. –

+0

@JohnThreepwood, пожалуйста, подумайте о принятии ответа, если он решает ваш запрос. – missingfaktor

Смежные вопросы