Отличается ли classOf [] в Scala 2.8 от 2.7? - PullRequest
3 голосов
/ 17 апреля 2010

У меня есть интерфейс с Java

public class IJava
{
   ...
   public java.lang.Class getType();
   ...
}

Наследуется в Scala

class CScala
{
    def getType() = classOf[Foo]
}

Работает в Scala 2.7.7. Но в 2.8.0.RC1 я получаю

type mismatch;  found   : java.lang.Class[Foo](classOf[Foo])  
required: java.lang.Class

Как мне получить java.lang.Class в Scala 2.8?

Ответы [ 2 ]

6 голосов
/ 17 апреля 2010

Попробуйте аннотировать тип возврата getType() как java.lang.Class. Проблема здесь в том, что вы используете необработанный тип в интерфейсе, а необработанные типы на Scala не очень хорошо работают.

1 голос
/ 17 апреля 2010

комментирует возвращаемый тип java.lang.Class [Foo]

класс CScala { def getType (): java.lang.Class [Foo] = classOf [Foo] }

все в порядке.

Но сигнатура метода изменяется подклассом. Интересно!

...