2010-04-17 4 views
3

У меня есть интерфейс с JavaЯвляется ли classOf [] в Scala 2.8 отличным от 2.7?

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?

ответ

6

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

1

аннотировать тип возвращаемого java.lang.Class [Foo]

класс CScala { Защиту GetType(): java.lang.Class [Foo] = classOf [Foo] }

его это нормально.

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