从scala [Seq]转换为java

时间:2016-06-03 21:22:38

标签: java scala type-conversion

我有一个scala案例类,如下所示:

case class AddressView(id: Option[Long],
                        address: Address,
                        purpose: Seq[String])

我必须从Java调用这个类 这似乎不起作用:

 AddressView billToAddress = new AddressView
          (BusinessFieldValue.ShipToAddressId,
              shipAddress,
              (Seq<String>)Arrays.asList("BILLING"));

有谁能告诉我这样做的正确方法?

1 个答案:

答案 0 :(得分:0)

所以你需要解决两件事;你需要将你的Long包装在一个选项中,你需要正确地将你的List转换为Scala Seq。

您的addressview类将Option [Long]作为参数。如果您可以将long传递给构造函数,那将是很好的,但是您必须将long包装在一个Option中。

选项有2个子类,Some和None。所以你需要将Some导入你的java程序。您还必须将scala库添加到类路径中。

对于转换,scala在scala.collection.JavaConversions中提供了一些内置功能。<​​/ p>

所以最后的结果是..

import scala.Some;
import scala.collection.JavaConversions;
import java.util.Arrays;

public class Test {

    public static void main(String[] args){
    AddressView billToAddress = new AddressView
        (new Some<>(BusinessFieldValue.ShipToAddressId),
            shipAddress,
            JavaConversions.asScalaBuffer(Arrays.asList("BILLING")));

    }

}