我有一个Scala函数,它返回一个
当我检查
util.Map[String], util.Set[String]
。def getAcls(): Map[String, Set[String]] = {
((for (groupRole: GroupRoleAccess <- groupRoleAccess;
user <- groupService.getGroup(groupRole.groupId).getUsers;
permissions = roleService.getRole(groupRole.roleId) .getPermissions)
yield user.getUserId -> permissions).groupBy(_._1).map { case (k,v) => (k, v.flatMap(_._2).asJava)})
}
我只需在一组这些对象上调用此方法,即可获得一个util.Set [util.Map [String],util.Set [String]]
。
var unevaluatedacls = for (aclTemplate <- aclTemplates)
yield aclTemplate.getAcls
当我检查
unevaluatedacls
时,我发现它是HashSet
类型。但它的元素是Wrappers$MapWrapper
类型而不是util.Map
类型。因此,我无法将此对象持久化。我无法理解这种行为。当我尝试...var unevaluatedacls = (for (aclTemplate <- aclTemplates)
yield aclTemplate.getAcls).asJava
unevaluatedacls
也被更改为 Wrapper$SetWrapper
。这是因为我在尝试将不可变的 Scala 集合转换为 Java 集合吗?我知道只有可变的 Scala 集合才能使用 JavaConverters
转换为相应的 Java 集合。
Serializable
接口(比如说memcached)。 - dk14