当前位置: 首页 > 知识库问答 >
问题:

如何将toArray结果转换为CompletableFuture[]类型?[副本]

柳飞鸾
2023-03-14

我看了几十个答案,但他们做的大多数是建议string::new或类似的技巧。在我的例子中,我要转换的类型是completablefuture 。下面是这个POJO:

class ARObject {
  CompletableFuture<Texture> texture;

  void setTexture(CompletableFuture<Texture> texture) {
    Log.d(TAG, String.format("Texture set for %d", resourceId));
    this.texture = texture;
  }

  CompletableFuture<Texture> getTexture() {
    return texture;
  }
}

由于重构,arobjectlist现在是一个数组。

private ARObject[] arObjectList = {
    ...
};

(显然这是一种简化,对象多了很多字段)。我只想获得一个completablefuture 数组,以便将其传递给completablefuture.AllOf(...)。以下是我想要的:

CompletableFuture<Texture>[] texturePromises = Stream.of(arObjectList).map(ARObject::getTexture).toArray();
CompletableFuture.allOf(texturePromises)

但是toArray根据IDE返回Object[]completablefuture ::new 生成器不工作,但无论如何这不是一个好主意,我们不想重新分配或扰乱那些未来。只需返回它们的数组。传递new completablefuture [arobjectlist.lengty] 不会编译。

不要把这个问题标记为重复问题,除非你绝对有把握并能指出一个解决方法。我通读了十几个词条。

共有1个答案

东方智敏
2023-03-14

arobjectlist是列表吗?那么显然是arobjectlist.size();不是arobjectlist.lengt

一般来说,混合泛型和数组是行不通的。认为数组,特别是非基元数组已经过时。如果你试图将两者混合起来,就会产生“痛苦”(在某种意义上,你必须跳过圈套,可能会陷入导致警告的“原始类型”)。

一般而言,不能生成包含泛型的数组;这是个限制。您所能做的是制作一个raw类型的数组并对其进行强制转换。

Object o = new List<String>[10]; // illegal
List<String>[] o = (List<String>[]) new List[10]; // legal, but warnings

completablefuture []texturePromises=(completablefuture [])stream.of(arObjectList).map(arobject::gettexture).toArray(completablefuture[]::new);

会胜任这份工作。还有警告。警告是无法回避的;真正的解决方案是停止使用数组来处理大部分所有事务;别再用了。

 类似资料:
  • 问题内容: 我有一个mysqli查询,我需要将其格式化为移动应用程序的JSON。 我已经设法为查询结果生成一个XML文档,但是我正在寻找更轻量的东西。(有关我当前的XML代码,请参见下文) 问题答案: 这样的输出: 如果您想要其他样式,可以尝试以下方法: 输出将是这样的:

  • 问题内容: 由于使用JDBC连接器进行MySQL查询,因此我有一个结果集。所以我的工作是将结果集转换为JSON格式。这样我就可以将其作为AJAX响应发送到客户端。有人可以解释一下如何转换为JSON格式,因为我对Java和JSON都是新手 问题答案: 许多人正确地回答了这个问题。但是,我认为我可以使用以下几小段代码为该帖子添加更多价值。它使用Apache-DBUtils和Gson库。

  • 我有以下代码,它从Marketo系统中获取一些数据 这将返回给我以下数据 我想做的是,保存这个返回到一个拼花文件。但是当我用下面的代码尝试时,我收到了一条错误消息。 我做错了什么?

  • 问题内容: Java 8引入了可组合的Future的新实现(包括一堆thenXxx方法)。我想专门使用它,但是我想使用的许多库仅返回非可组合实例。 有没有一种方法可以将返回的实例包装在内,以便我可以编写它? 问题答案: 有一种方法,但是您不喜欢它。以下方法将a 转换为a : 显然,这种方法的问题在于,对于每个 Future ,都会阻塞线程以等待 Future 的结果-与 Future 的想法相矛盾

  • 在我的项目中,我有一个Akka层,它返回一个,接收Future的部分是Java风格。 团队中的人不了解Scala,他们宁愿使用,因为他们更了解Java 8 API。 有没有什么好方法可以将一个转换成一个?。 显然是以非阻塞的方式。 当做

  • 5.5 结果的类型转换 类型转换(Formatter机制)是WebMagic 0.3.2增加的功能。因为抽取到的内容总是String,而我们想要的内容则可能是其他类型。Formatter可以将抽取到的内容,自动转换成一些基本类型,而无需手动使用代码进行转换。 例如: @ExtractBy("//ul[@class='pagehead-actions']/li[1]//a[@class='socia