gpt4 book ai didi

java - 使用 `_` 定义 java.util.Set 的读取

转载 作者:行者123 更新时间:2023-12-01 13:27:57 25 4
gpt4 key购买 nike

使用 Play Framework 的 JSON 库,我尝试定义一个 Reads[Obj] 用于:

Obj.java

public class Obj {
private Long id;
private String description;
private Set<Group> groups;

public Obj(Long id, String description, Set<Group> groups) {
// set fields
}
}

但是,当我使用_.asJava时,我收到缺少参数类型编译时错误。

import play.api.libs.json._
import play.api.libs.functional.syntax._
import scala.collection.JavaConverters._

implicit val ObjReads: Reads[Obj] = (
(JsPath \ "id").read[Long] and
(JsPath \ "description").read[String] and
(JsPath \ "groups").read[Set[Group]] and
)(new Obj(_,_,_.asJava))

请注意,我需要调用 asJavascala.collection.immutable.Set 转换为 java.util.Set

在不命名每个参数及其类型的情况下,如何在第三个元素上简洁地调用 asJava

最佳答案

您不能总是只添加下划线而不是名称,因为编译器并不总是知道您想要如何解析它们。

def f(a: String, b: String) = f"$a~$b"

Vector(1,2,3).foldLeft("0")(f(_, _.toString)) // ERROR
Vector(1,2,3).foldLeft("0")((z,x) => f(z, x.toString)) // fine

只需为参数命名是解决此问题的简单方法。

关于java - 使用 `_` 定义 java.util.Set 的读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com