복붙노트

[SCALA] 나는 런타임에 변수의 유형을 얻으려면

SCALA

나는 런타임에 변수의 유형을 얻으려면

나는 런타임에 변수의 유형을 싶어. 이걸 어떻게해야합니까?

해결법

  1. ==============================

    1.그래서, 엄격하게 말하면, "변수의 타입은"항상 존재하고, 유형 매개 변수로 주위에 전달 될 수 있습니다. 예를 들면 :

    그래서, 엄격하게 말하면, "변수의 타입은"항상 존재하고, 유형 매개 변수로 주위에 전달 될 수 있습니다. 예를 들면 :

    val x = 5
    def f[T](v: T) = v
    f(x) // T is Int, the type of x
    

    그러나 당신이 원하는에 따라서해야 할 일

  2. ==============================

    2.나는 질문이 불완전하다고 생각합니다. 당신은 당신이 다음 아래에 몇 typeclass의 형식 정보를 가져하고자하는 것을 의미하는 경우 :

    나는 질문이 불완전하다고 생각합니다. 당신은 당신이 다음 아래에 몇 typeclass의 형식 정보를 가져하고자하는 것을 의미하는 경우 :

    그런 다음 지정한대로 인쇄 할 경우 :

    scala>  def manOf[T: Manifest](t: T): Manifest[T] = manifest[T]
    manOf: [T](t: T)(implicit evidence$1: Manifest[T])Manifest[T]
    
    scala> val x = List(1,2,3)
    x: List[Int] = List(1, 2, 3)
    
    scala> println(manOf(x))
    scala.collection.immutable.List[Int]
    

    당신은 다음 REPL 모드 인 경우

    scala> :type List(1,2,3)
    List[Int]
    

    또는 당신은 단지 @monkjack의 설명에 다음 클래스 유형이 "문자열".getClass이 목적을 해결할 수있는 무엇을 알고 싶은 경우

  3. ==============================

    3.변수의 종류에 따라 당신은 객체의 런타임 클래스를 의미하는 경우 변수 포인트는, 당신은 모든 객체가 가지고있는 클래스 참조를 통해이를 얻을 수 있습니다 할 수있다.

    변수의 종류에 따라 당신은 객체의 런타임 클래스를 의미하는 경우 변수 포인트는, 당신은 모든 객체가 가지고있는 클래스 참조를 통해이를 얻을 수 있습니다 할 수있다.

    val name = "sam";
    name: java.lang.String = sam
    name.getClass
    res0: java.lang.Class[_] = class java.lang.String
    

    당신은 그러나 변수로 선언 된 유형을 의미하는 경우에, 당신은 그것을 얻을 수 없습니다. 예, 당신이 말한다면

    val name: Object = "sam"
    

    당신은 여전히 ​​다시 위의 코드에서 문자열을 얻을 것이다.

  4. ==============================

    4.나는 그것을 테스트 한 일

    나는 그것을 테스트 한 일

    val x = 9
    def printType[T](x:T) :Unit = {println(x.getClass.toString())}
    
  5. from https://stackoverflow.com/questions/19386964/i-want-to-get-the-type-of-a-variable-at-runtime by cc-by-sa and MIT license