如何在Groovy中将PackageVersionResponse列表转为版本字符串列表
解决方案
Groovy 写法
Groovy 里可以直接用集合的 collect 方法(和 Node.js 的 map 功能等价),一步完成转换:
// 提取返回结果中的版本列表,转换为字符串列表 def versionList = pvs.packageVersions.collect { pv -> pv.version() }
如果pvs是ListPackageVersionsResponse对象,需要先提取其中的packageVersions列表,再通过collect遍历每个元素调用version()方法,最终得到目标字符串列表。
Java 写法
Java 提供两种常用实现方式,可根据项目的JDK版本选择:
Java 8+(Stream API)
借助 Stream 的map方法实现类似 Node.js 的映射逻辑:
import java.util.List; import java.util.stream.Collectors; // 提取版本列表,通过Stream转换为字符串列表 List<String> versionList = pvs.getPackageVersions() .stream() .map(pv -> pv.version()) // 也可使用方法引用:PackageVersionResponse::version .collect(Collectors.toList());
传统循环写法(兼容所有Java版本)
如果项目使用低版本JDK,用普通循环遍历收集结果:
import java.util.ArrayList; import java.util.List; List<String> versionList = new ArrayList<>(); for (PackageVersionResponse pv : pvs.getPackageVersions()) { versionList.add(pv.version()); }
补充修正说明
你的原代码有两处细节需要调整:
ListPackageVersionsRequest的构建方式有误,正确写法为:
def request = ListPackageVersionsRequest.builder() .domain(domain) .repository(repo) .packageValue(packageValue) // 注意:package是Java/Groovy关键字,不能用作变量名,需重命名 .build()
- 调用客户端方法时,Groovy/Java遵循小驼峰命名规范:
client.listPackageVersions(request),而非ListPackageVersions
内容的提问来源于stack exchange,提问作者jaucourt
相关产品推荐
相关产品推荐

