如何在不使用Java Reflection API的情况下从HashMap中获取对象?

时间:2012-01-08 22:06:38

标签: scala reflection

假设我有一个HashMap:

val userMap = new HashMap[String, String]
userMap += "username" -> "user"
userMap += "password" -> "pass"

和一个对象:

username:String = ""
password:String = ""

在不使用Java Reflection API(带或不带注释)的情况下,将HashMap中的值放入对象的最佳方法是什么?

可能与该问题类似:Scala - Lift - map a custom boxed object for bind?

1 个答案:

答案 0 :(得分:5)

由于您不想要反射,因此无法自动匹配名称。但手动完成并不难。

鉴于

class User(val username: String = "", val password: String = "") {}

我会

for {
  name <- userMap.get("username")
  pwd <- userMap.get("password")
} yield new User(name,pwd)

如果用户位于该地图中,则会为Option[User]用户提供Some,如果不是,则为None