gpt4 book ai didi

java - 我可以在改造方法声明中使用可变参数吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:17 26 4
gpt4 key购买 nike

我有一个 API 端点定义为:

获取 https://api-server.com/something/{id_or_ids}

ids 可以是单个对象 ID 以逗号分隔的 ID 列表
例如
https://api-server.com/something/abcd1234
https://api-server.com/something/abcd1234,abcd4567,gdht64332

如果给出了一个单个 id(并且找到了一个匹配的对象),我会得到一个 json 对象:
{ "blah": "blah"}

如果给出多个id,我会在json数组中得到响应:
[{"blah1":"bleh"}, {"blah2":"meh"}, {"blah3":"blah"}]

我目前在想我应该将其作为两种方法来实现(可以在一种方法中完成吗?):

采用单个 id 并返回单个对象:

@GET("/something/{id}")
void getObject (@Path("id") String objectId, Callback<MyObject> callback)

采用多个 ID 并返回一个对象数组

@GET("/something/{ids}")
void getObject (Callback<MyObject[]> callback,@Path("ids") String ... objectIds)

有没有办法提供第二种方法 varargs 并将它们连接到 id 字段中?

谢谢

最佳答案

Retrofit 无法知道你想如何加入路径中的字符串。虽然逗号看起来很明显,但没有理由有人可能想要竖线 (|) 或冒号 (:) 或其他任何东西。

因为这个事实,我们什么都不做,全靠你来选择。

有两种解决方法:

  • 使用String 作为参数类型并在调用点加入。例如:

    foo.getObject(Joiner.on(',').join(things));
  • 使用自定义对象,其 toString() 方法负责为一个或多个对象返回正确的格式。

关于java - 我可以在改造方法声明中使用可变参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617792/

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