2016-08-30 6 views
0

Я очень новичок в scala. Я начал использовать scala для моего искрового проекта. Я использую код java. следующая строка Я получаю ошибку.Тип несоответствия найдено java.util.List [String]: required Список [String]

  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")) 
     ); 
} 

Так я получаю ошибку на мой метод четкости selectColumnsPerDocdisplayRows() говорят рассогласование

типа; найдено: java.util.List [String] требуется: Список [String]

+0

проверить это http://stackoverflow.com/questions/16162090/how-to-convert-a-java-util-list-to-a-scala -list – tintin

ответ

1

Здравствуйте Спасибо Брайан Кент и Крис Шайн для suggesion, я удалил список [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 
    ); 

}

0

Добавьте преобразования:

import collection.JavaConverters._ 

и добавить .asScala конвертировать

+0

импорта collection.JavaConverters._ \t Защиту selectColumnsPerDocdisplayRows (строка: Строка): Список [String] = { \t \t docDisplay ( \t \t \t row.getAs [String] ("ID"), \t \t \t row.getAs [String] ("имя"), \t \t \t row.getAs [String] ("сессии"), \t \t \t row.getAs [String] ("Время"), \t QSUtils.ParseDocumentGuid (row.getAs ("Data "), QSUtils.DOCDISRELATED, row.getAs [String] (" name ")). AsScala \t \t \t); \t} Я получил следующую ошибку: – user2844511

+1

'.asScala.toList' –

+0

пытался .asScala.toList получил следующее сообщение: тип несоответствия; found: com.extract.spark.QSSparkUtils.docДисплей необходим: List [String] – user2844511

Смежные вопросы