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

标签 scala reflection

假设我有一个 HashMap:

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

和一个对象:

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

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

它可能类似于那个问题:Scala - Lift - map a custom boxed object for bind?

最佳答案

由于不需要反射,因此无法自动匹配名称。但手动操作并不难。

给定

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

我只是

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

这将为您提供一个 Option[User],如果该 map 中有 Some 用户,则为 None

关于scala - 如何在不使用 Java 反射 API 的情况下从 HashMap 中获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781786/

相关文章:

java - 如何将 MyPojo 对象作为对 map 方法的引用传递?

scala - 为什么在IntelliJ中运行Scala 2.13测试而不是在Scala 2.12中运行时出现此错误?

scala - 案例类和隐式参数以及模式匹配

java - 可以向Kafka生产但不能消费

java - 在 Java 中,如何将类型列表中的所有静态字段作为其类的对象(而不是 Field 实例)?

Haskell:显示 Hlist 上所有 "showable"的元素

c# - 如何在 C# 中调用动态类型的泛型方法

java - Spark 蓄能器

java - 如何在Scala中实现Java接口(interface)(针对Kafka)?

go - 存储有关结构的信息/引用