Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:如何访问类[?0]类型?_Scala_Types - Fatal编程技术网

Scala:如何访问类[?0]类型?

Scala:如何访问类[?0]类型?,scala,types,Scala,Types,正如Daniel所建议的,我遗漏了很多信息,所以我想做的是: 我只是上了一堂像POJO一样的课 class MyDataObj(val a:String, val b:Boolean) 我想在SQL insert语句中转换它的一个实例。有人建议我使用以下代码段: val o = new MyDataObj("word", false) val attributes = o.getClass.getDeclaredMethods.filter { _.getReturnType != Void.

正如Daniel所建议的,我遗漏了很多信息,所以我想做的是:

我只是上了一堂像POJO一样的课

class MyDataObj(val a:String, val b:Boolean)
我想在SQL insert语句中转换它的一个实例。有人建议我使用以下代码段:

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))
我不知道如何访问类的方括号之间的类型来评估如何构建我的SQL语句:对于Class[String]我需要将元组的第三个元素括在引号中,对于Class[int]或Class[boolean],我只需要将值作为字符串返回,不带任何括线


希望现在已经足够清楚了

你找错树了。:)

方法返回类型是
Class[\u]
——一个
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

我只是用更多的细节重新回答了我的问题。请看一看。谢谢,getCanonicalName是我要找的。现在你让我明白了什么是一种类型,我意识到解决方法非常简单。。。我想知道我需要多长时间才能对Scala有一个清晰的了解(到目前为止只有三个星期),考虑到我没有Java背景,我想这需要很长时间。@Max脱离主题,但两个多星期后才刚刚开始。我强烈推荐:它是免费的,不会占用你太多的时间。非常有见地的回答。