发现类型不匹配java.util.List [String]:required List [String]

时间:2016-08-30 01:33:37

标签: scala apache-spark scala-java-interop

我对scala很新。我已经开始在我的spark项目中使用scala了。我正在使用一些java代码。以下行我收到错误。

         case class docDisplay( id :String,name :String,  session :String,
  time :String, docguid: scala.collection.immutable.List[String]

我的ParseDocumentGuid的代码是java类,如下所示。

public static List<String> ParseGuid(String Data, String type,String Name) {    
    boolean validJson=checkValidJson(Data);
    if(validJson==true)

    {
        try
        {
            JSONObject  json = null;
         json = new JSONObject (Data);
        List<String> singleDocGuidList= new ArrayList<String>();
        if(json!=null && json.getString("guid").equalsIgnoreCase("guid") )
        {
                    singleDocGuidList.add(json.getString("guid"));
        }
         return singleDocGuidList;
    }    
    catch(Exception e)
       {
           List<String> singleDocGuidList= new ArrayList<String>();
            singleDocGuidList.add(e.getMessage());
            return singleDocGuidList;
       }
    }
 else
    {
        List<String> singleDocGuidList= new ArrayList<String>();
        singleDocGuidList.add("unKnownDocumentGuid");
        return singleDocGuidList;
    }
}

以下是调用上述方法

的代码
def selectColumnsPerDocdisplayRows(row:Row):List[String]= {
    docDisplay(
        row.getAs[String]("id"),
        row.getAs[String]("name"),
        row.getAs[String]("session"),
        row.getAs[String]("time"),
    Utils.ParseDocumentGuid(row.getAs("Data"),Utils.DOCDISRELATED,row.getAs[String]("name"))
        );
}

所以我的方法def selectColumnsPerDocdisplayRows()说错误

类型不匹配; found:java.util.List [String] required:List [String]

2 个答案:

答案 0 :(得分:2)

您好,感谢Brian Kent和Chris Shain的建议,我已经从我的def中删除了List [String]并且它与之合作

import collection.JavaConverters ._

和.asScala.toList

 def selectColumnsPerDocdisplayRows(row:Row)= {
docDisplay(
    row.getAs[String]("id"),
    row.getAs[String]("name"),
    row.getAs[String]("session"),
    row.getAs[String]("time"),
Utils.ParseDocumentGuid(row.getAs("Data"),Utils.DOCDISRELATED,row.getAs[String]("name")).asScala.toList
    );

}

答案 1 :(得分:1)

添加转化次数:

import collection.JavaConverters._

并添加.asScala进行转换