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

3

假设我有一个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个回答

5

由于您不希望反射,因此无法自动匹配名称。 但手动操作并不困难。

假设

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

我会直接

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

如果在该映射中存在,则会返回一个具有Some用户的Option [User],否则返回None


1
这不应该是 userMap.get(<string>) 吗? - missingfaktor
@missingfaktor - 确实应该这样。已经修复了。 - Rex Kerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接