繁体   English   中英

在Java中解析scalaz.Validation

[英]Parsing scalaz.Validation in Java

我有一个带有以下签名的scala函数:

def getValue: Validation[ Throwable, String ]

现在,我想在Java中处理调用此函数的结果(例如res )。

我可以调用res.isSuccess()res.isFailure()但是如何提取底层的Throwable或成功String

我尝试了但是测试(res instanceof scalaz.Failure)导致scalaz.Failure cannot be resolved to a type (scala和scalaz jar可见)

有没有一种通用的方法来ValidationOptionEither ......等等?

编辑我意识到我可能会使用fold但这将导致Java中许多丑陋的样板代码(不需要更多)。 有什么好看的吗?

SuccessFailure都是案例类:

final case class Success[E, A](a: A) extends Validation[E, A]
final case class Failure[E, A](e: E) extends Validation[E, A]

所以你可以编写以下内容,例如:

import scalaz.*;

public class Javaz {
  public static void main(String[] args) {
    Validation<Throwable, String> res = new Success<Throwable, String>("test");

    if (res.isSuccess()) {
      System.out.println(((Success) res).a());
    } else {
      System.out.println(((Failure) res).e());
    }
  }
}

对于OptionEither您可以使用get方法(在Either的情况下进行left投影或right投影之后)。

但是,如果可能的话,在Scala方面进行fold等的这种展开可能更加清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM