我需要上课#39;名称和类型。
我试过这段代码。
case class test( name: String, num: Int, types: String)
ru.typeOf[ test].members.foreach { x =>
if( !x.isMethod)
{
println( x + " => " + x.name + " / " + x.typeSignature)
if( x.typeSignature == scala.Int) {
}
//if( x.typeSignature == java.lang.String) { // object java.lang.String is not a value
//}
}
}
结果
值类型=> types / String
value num => num / scala.Int
value name => name / String
我可以获取所有名称和类型,但由于字符串类型的值,不能给出条件类型。有什么想法吗?
答案 0 :(得分:3)
您应该使用typeOf
获取String
类型,例如:
x.typeSignature =:= typeOf[String]
=:=
用于查看两者是否表示完全相同的编译时类型。 http://docs.scala-lang.org/overviews/reflection/symbols-trees-types.html
对于您的比较Int
,您还应该比较x.typeSignature =:= typeOf[Int]
,直接比较scala.Int
,您将收到以下警告:
<console>:18: warning: reflect.runtime.universe.Type and Int.type are unrelated: they will most likely never compare equal
res23.typeSignature == scala.Int