Так как вы не хотите отражения, вы не можете сопоставить имена автоматически. Но сделать это вручную не сложно.
Учитывая
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
, если нет.