스칼라는 컬렉션의 포함 된 클래스를 가져 오는 방법이 있습니까? 즉 내가 가지고있는 경우 :스칼라 - 벡터의 포함 된 클래스를 얻는 방법?
val foo = Vector[Int]()
거기에서 classOf [Int]를 되 찾을 수있는 방법이 있습니까?
(그냥이 비어있을 수 있기 때문에 첫 번째 요소가 작동하지 않습니다 확인.) 당신이 방법에서 그것을 매개 변수를받을 경우
스칼라는 컬렉션의 포함 된 클래스를 가져 오는 방법이 있습니까? 즉 내가 가지고있는 경우 :스칼라 - 벡터의 포함 된 클래스를 얻는 방법?
val foo = Vector[Int]()
거기에서 classOf [Int]를 되 찾을 수있는 방법이 있습니까?
(그냥이 비어있을 수 있기 때문에 첫 번째 요소가 작동하지 않습니다 확인.) 당신이 방법에서 그것을 매개 변수를받을 경우
당신은 TypeTag
를 사용할 수 있습니다
import scala.reflect.runtime.universe._
def getType[F[_], A: TypeTag](as: F[A]) = typeOf[A]
val foo = Vector[Int]()
getType(foo)
컬렉션 자체에서,하지만, 당신이 그에게 암시 TypeTag
을 추가 할 수 없음 메서드를 사용하여 런타임에 형식을 가져옵니다. 예 :
def mymethod[T](x: Vector[T])(implicit tag: TypeTag[T]) = ...
자세한 내용은 https://docs.scala-lang.org/.../typetags-manifests.html을 참조하십시오.
기술적으로는 TypeTag 또는 Shapless 라이브러리에서 Typeable이/TypeCase을 (link 참조)를 사용하여 그것을 할 수 있습니다. 그러나 저는이 모든 트릭이 타입 매개 변수를 파고 들지 않고 작업을 완료하는 더 좋은 방법이 없을 때 실제로는 매우 진보 된 솔루션이라는 것을 알고 싶습니다.
scala 및 java의 모든 유형 매개 변수는 런타임시 유형 삭제의 영향을받으며 클래스에서 이러한 정보를 추출하려고 생각하면 구현하려는 솔루션을 다시 디자인하는 좋은 징표가 될 수 있습니다.
[당신은 실제로 무엇을하려고합니까?] (http://mywiki.wooledge.org/XyProblem) 일단이 클래스 객체를 가지고 나면이 클래스 객체로 무엇을 할 것으로 예상합니까? –