将Java CompletableFuture转换为Scala Future

时间:2019-04-10 20:01:07

标签: scala future

从我的Scala函数中,我正在调用一个Java API方法,该方法返回了CompletableFuture。我现在需要将其转换为Scala Future!我想我可以使用scala java8压缩工具来完成此工作,但是我应该使用该工具的哪个版本?我尝试使用:

  

“ org.scala-lang.modules”%“ scala-java8-compat”%“ 0.9.0”

我的sbt构建因

而失败
  

org.scala-lang.modules#scala-java8-compat; 0.9.0:

找不到

。我想我应该添加一个解析器,但是哪一个呢?

第二,为了使用FutureConverters.toScala,我需要访问completionStage。从哪里可以得到这个?

例如,在通话中:

var sections = new Dictionary<string, List<string>>();

foreach(var it in uploadBox.Items)
{
    var item = it.ToString();

    if(item.Contains("Section"))
    {

        var section = GetSection(item);

        if(!sections.ContainsKey(section))
        {
            sections.Add(section, new List<string>());            
        } 

        sections[section].Add(item);
    }    
}

private string GetSection(string item)
{
    var split = item.Split("_");
    return $"{split[1]}_{split[2]}";    
}

我从哪里获得此CompletionStage?

1 个答案:

答案 0 :(得分:2)

尝试

libraryDependencies += "org.scala-lang.modules" %% "scala-java8-compat" % "0.9.0"

相同
libraryDependencies += "org.scala-lang.modules" % "scala-java8-compat_2.12" % "0.9.0"

请注意%%_2.12

CompletionStagejava.util.concurrent.CompletableFuture的超类型。 因此,如果您有CompletableFuture,就是这样。