scala返回List<Object>类型给java

应用场景:scala那边做数据处理,java这边接收返回数据做逻辑处理。现在scala那边需要将得到的数据封装到一个List里面,在java那边创建一个对应Object的javabean,接收传回来的List模型,进行解析处理。

先上javabean:

package javabean;

import java.util.ArrayList;
import java.util.List;

import com.github.katjahahn.parser.sections.idata.NameImport;
import com.github.katjahahn.parser.sections.idata.OrdinalImport;

public class ImportInfo {
    private String importDLLName;

    private List<String> importFunNameList;

    public ImportInfo() {
        super();
    }

    public ImportInfo(String importDLLName, List<String> importFunNameList) {
        super();
        this.importDLLName = importDLLName;
        this.importFunNameList = importFunNameList;
    }

    public String getImportDLLName() {
        return importDLLName;
    }

    public void setImportDLLName(String importDLLName) {
        this.importDLLName = importDLLName;
    }

    public List<String> getImportFunNameList() {
        return importFunNameList;
    }

    public void setImportFunNameList(List<String> importFunNameList) {
        this.importFunNameList = importFunNameList;
    }


}

再上scala的数据封装类:

  def importsModel: java.util.List[ImportInfo] = {
      val importDLLList = ListBuffer[ImportInfo]().asJava

      val loader = new SectionLoader(data)
      val maybeImports = loader.maybeLoadImportSection()
      if (maybeImports.isPresent && !maybeImports.get.isEmpty) {
        val idata = maybeImports.get
        val imports = idata.getImports.asScala
        for (im <- imports) {
          val ImportInfo = new ImportInfo()
          ImportInfo.setImportDLLName(im.getName)
          val importFunNameList = ListBuffer[String]().asJava
          val importsDllFun = im.getNameImports.asScala
//          importFunNameList.clear()
          for (ni <- importsDllFun) {
            importFunNameList.add(ni.getName)
          }
          ImportInfo.setImportFunNameList(importFunNameList)
          importDLLList.add(ImportInfo)
        }
      } else ""
        importDLLList
  }
这样就实现了scala返回List<Object>给java。本例是改项目需要参考一个开源项目,这个开源项目里面穿插着用了scala和java,我对scala不熟悉,也并不知道为何不全在java里面做,而是要穿插着scala,所以在实现一个scala返回List<Object>给java也折腾了半天。另外,在折腾过程中遇到几点问题,我先记下来,如果有哪位大神知道,恳请执教:
Q2.为何要scala和java穿插用,是scala处理数据能力比java更佳吗?
Q1.通常有碰到两层循环需要其中一个List在内存循环完做一次清空的情况,java里面的List有clear()方法,但我在scala里面采用的ListBuffer[ImportInfo]().asJava,在clear以后就把所有之前存的也一并清空了,我换成List[ImportInfo]().asJava又抛出不支持的数据处理异常,最后不得已采用循环里面实例化ListBuffer,不知道是否有更优方法?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值