【问题标题】:How to convert List to varargs object in Java 8 [duplicate]如何在 Java 8 中将 List 转换为 varargs 对象 [重复]
【发布时间】:2019-02-15 14:40:09
【问题描述】:

我有一个函数 (findByNames),它可以像下面的例子一样接受传播参数:

List<Users> findByNames(String... names)
{
  ...
} 

作为参数,我有一个列表:

List<String> names = asList("john","abraham");

所以我想将names 列表转换为传播对象以使用findByNames 函数,这可能使用Java 8 吗? 我试过这个解决方案:

MapUtils.getMap(names.toArray(new String[names.size()]))

但它不起作用!

感谢您的宝贵时间。

【问题讨论】:

  • 它叫Varargs
  • @haticeSigirci no 不起作用,就我而言!,你试过了吗?
  • 问题似乎是你说你想调用findByNames,但是你不是只是这样做,而是调用MapUtils.getMap

标签: java arrays java-8


【解决方案1】:

List&lt;String&gt;转换成数组String[]

// Java-8(tag in question)
List<Users> users = findByNames(names.toArray(new String[0]));
// Java-11
List<Users> users = findByNames(names.toArray(String[]::new));

【讨论】:

  • 对于 Redis,它对我不起作用。我的命令是syncCommands.mget(redisKeys.toArray(new String[redisKeys.size()]));,我收到错误消息[Ljava.lang.String; cannot be cast to java.lang.String。有什么帮助吗?
  • @roottraveller 在您的情况下redisKeys 是什么类型?如果是List&lt;String&gt;,它应该可以正常工作。您确定错误不是mget 接受String 而不是String[]
  • 我修好了。我刚刚重启了 Redis 集群,它就开始工作了。
猜你喜欢
  • 2021-07-16
  • 2020-02-07
  • 1970-01-01
  • 2016-01-03
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多