我有几个看起来像这样的对象(val数量未知,val名称可以是随机的):
object MyObj{
val valAbc: ChainBuilder = a
val valDef: ChainBuilder = b
val valGhi: ChainBuilder = c
val valAdb: ChainBuilder = d
val val45: ChainBuilder = e
...
}
并且我想执行类似的操作,将前一个条目及其值放入映射中,然后是当前条目,然后是第二个条目:
obj MyObjManager{
def sortInMap(myObj: Object): Map[String, (ChainBuilder, String)] = {
var myMap = mutable.Map.empty[String, (ChainBuilder, String)]
var currentName: String = ""
val listVals = :myObj.getClass.getDeclaredFields
listVals.foreach{f =>
if((current != "") && (f.getName!="MODULE$")){
myMap.put(currentName,(myObj.getClass.getMethod(currentName).invoke(myObj), f.getName)
current = f.getName
}
}
myMap.toMap
}
}
我的问题是,不允许MyObj.getClass.getDeclaredFields按声明顺序获取我的值,这对我来说是必不可少的。
在scala中是否有任何方法可以使用scala.reflect.runtime.universe._来确保声明顺序得到遵守?
非常感谢