簡體   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