发现类型不匹配 java.util.List[String]:需要列表 [String]
Type mismatch found java.util.List[String]:required List[String]
我是 Scala 的新手。我已经开始在我的 spark 项目中使用 scala。我正在使用一些 java 代码。下一行我收到错误。
case class docDisplay( id :String,name :String, session :String,
time :String, docguid: scala.collection.immutable.List[String]
)
我的 java class ParseDocumentGuid 的代码如下。
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() 出错说
类型不匹配;找到:java.util.List[String] 需要:List[String]
添加转化:
import collection.JavaConverters._
并添加.asScala
转换
你好谢谢 Brian Kent 和 Chris Shain 的建议,我已经从我的 def 中删除了 List[String] 并且它与
一起工作
进口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
);
}
我是 Scala 的新手。我已经开始在我的 spark 项目中使用 scala。我正在使用一些 java 代码。下一行我收到错误。
case class docDisplay( id :String,name :String, session :String,
time :String, docguid: scala.collection.immutable.List[String]
)
我的 java class ParseDocumentGuid 的代码如下。
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() 出错说
类型不匹配;找到:java.util.List[String] 需要:List[String]
添加转化:
import collection.JavaConverters._
并添加.asScala
转换
你好谢谢 Brian Kent 和 Chris Shain 的建议,我已经从我的 def 中删除了 List[String] 并且它与
一起工作进口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
);
}