2016-08-19 3 views
1

Java 라이브러리와의 상호 운용성을 위해 java.lang.Class[T]의 인스턴스를 가져와야합니다. 나는 다음과 같은 case class 정의를 가지고 있다고 가정하자 :인스턴스가없는 스칼라 클래스 값

case class Foo(name: String, colour: String, amount: Int) 

내가 bar.getClass를 호출하여 해당 인스턴스의 클래스를 얻을 수 val bar: Foo의 인스턴스를 감안할 때.

그러나 아직 Foo의 인스턴스가 없습니다. 그 이유는 Class[T]의 인스턴스가 필요하기 때문입니다. 어쨌든 Class[T] 인스턴스를 생성하지 않고 Foo 인스턴스를 만들지 않습니까?

+3

'classOf [Foo]'. – Kolmar

+0

D' oh! 나는 알고 있었음에 틀림 없다 .... 고마워! – irundaia

답변

0

미리 정의 된 함수 classOf을 사용하여 스칼라에서 클래스 값을 가져 오는 방법은 여러 가지가 있습니다.

귀하의 경우 (@Kolmar에 명시된 바와 같이) classOf[Foo]을 사용하면 인스턴스화되지 않은 개체의 클래스를 가져올 수 있습니다. 이것의 출력이 조금 (워크 시트에서) 혼동이 될 수 있습니다 : 후자는 약간 이상한 출력 구문 주어, 혼동하기 쉬운 수

classOf[Foo] = class A$A12$A$A12$Foo 
classOf[String] // class java.lang.String 
classOf[List[String]] // class scala.collection.immutable.List 
classOf[Array[String]] // class [Ljava.lang.String; 

있다.

관련 문제