1

正如丹尼尔建议的那样,我省略了很多信息,所以这就是我想要做的:

我只有一个 POJO 类

class MyDataObj(val a:String, val b:Boolean)

我想在 SQL 插入语句中转换它的一个实例。有人建议我使用这个片段:

val o = new MyDataObj("word", false)
val attributes = o.getClass.getDeclaredMethods.filter { _.getReturnType != Void.TYPE
}.map {
method => (method.getName, method.getReturnType, method.invoke(o))
}

返回一个这样的数组:

Array[(String, Class[?0], Object) forSome { type ?0 }] = Array((a,class java.lang.String,word))

我无法弄清楚如何访问 Class 括号之间的类型以评估如何构建我的 SQL 语句:如果是 Class[String] 我需要将元组的第三个元素括在引号中,如果是 Class [int] 或 Class[boolean] 我只需要将值作为不带附件的字符串返回。

希望现在已经足够清楚了。

4

1 回答 1

2

你对着错误的树吠叫。:)

方法返回类型是Class[_]--a Class,它的类型参数可以是任何东西,但你不需要知道类型参数:类就是你想要的!您可以只获取其字符串表示形式,例如:

scala> attributes(0)._2.toString
res3: String = boolean

scala> attributes(1)._2.toString
res4: String = class java.lang.String

或者您可以获得规范名称:

scala> attributes(0)._2.getCanonicalName
res7: String = boolean

scala> attributes(1)._2.getCanonicalName
res8: String = java.lang.String
于 2013-08-28T18:19:54.663 回答