2010-04-17 6 views
3

나는 그것은 그것은 스칼라 2.7.7에서 근무 스칼라Scala 2.8의 classOf []가 2.7과 다른가요?

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

에서 상속 자바

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

에서 인터페이스를 가지고있다. 그러나 2.8.0.RC1에, 나는

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

가 어떻게 스칼라 2.8에 java.lang.Class를 얻을 수 있지?

답변

6

getType()의 반환 유형에 java.lang.Class으로 주석을 추가하십시오. 여기서 문제는 인터페이스에서 원시 타입을 사용하고 있으며 원시 타입이 실제로 스칼라와 잘 작동하지 않는다는 것입니다.

1

주석 반환형의 java.lang.Class [푸]

클래스 CScala { DEF getType로()의 java.lang.Class [푸 = classOf [푸] }

그것을 괜찮아.

그러나 메소드 서명은 하위 클래스에 의해 변경됩니다. 흥미 롭 군!