我有一个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"));
有谁能告诉我这样做的正确方法?
答案 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")));
}
}