将Java HashMap转换为Scala数组[Object]生成JasperReport时出错

将Java HashMap转换为Scala数组[Object]生成JasperReport时出错,scala,jasper-reports,Scala,Jasper Reports,我试图在Scala中实现JasperReport生成。我需要从内存中提取信息并将其与报告合并 这是文档中用Java表示的内容: HashMap[] reportDataSource = new HashMap[4]; // fill reportDataSource with information JRMapArrayDataSource dataSource = new JRMapArrayDataSource(reportDataSource); JasperRunManager.runR

我试图在Scala中实现JasperReport生成。我需要从内存中提取信息并将其与报告合并

这是文档中用Java表示的内容:

HashMap[] reportDataSource = new HashMap[4];
// fill reportDataSource with information
JRMapArrayDataSource dataSource = new JRMapArrayDataSource(reportDataSource);
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream,
                                       new HashMap(), dataSource);
这是我在Scala中的尝试,我在下面的行中得到一个编译错误:

val row1 = HashMap[String,String]("code" -> "B1", "name" -> "Bank 1")
val row2 = HashMap[String,String]("code" -> "B2", "name" -> "Bank 2")
val map = Array[HashMap[String,String]](row1,row2)  

val reportDataSource = new JRMapArrayDataSource(map)  // <-- this line does not compile

val baos = new ByteArrayOutputStream
JasperRunManager.runReportToPdfStream(blob.getBinaryStream, baos, params, reportDataSource)
Ok(baos.toByteArray).as("application/pdf")
val row1=HashMap[String,String](“代码”->“B1”,“名称”->“银行1”)
val row2=HashMap[String,String](“代码”->“B2”,“名称”->“银行2”)
val map=Array[HashMap[String,String]](第1行,第2行)

val reportDataSource=new JRMapArrayDataSource(map)//您可以非常轻松地修复错误:
val-map=Array[Object](第1行,第2行)

您的代码之所以没有编译,首先是因为映射值的类型是
Array[HashMap[String,String]]
,而方法只接受
Array[Object]
(我建议您阅读有关方差的内容,但在出现此问题的情况下这并不重要)


另一方面,我假设您的代码在运行时仍然会失败,因为您使用的是scala HashMaps,而您使用的方法可能需要java HashMaps

一件可能有效的事情是更改数组变量的类型。正如在val map=Array[Object](第1行,第2行)中一样,感谢使用java.util.HashMap的技巧,它工作得非常好。