2017-08-08 7 views
0

に警告マイコード:未確認のキャストコード

private List<Day> readDays(File file) { 
     List<Day> days = new ArrayList<>(); 
     try { 
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); 
      days.addAll((List<Day>) in.readObject()); 
     } catch (IOException | ClassNotFoundException e) { 
      Logger.logError(LOG_TAG, e); 
     } 
     return days; 
    } 

このコードの未チェックのキャスト問題

days.addAll((List<Day>) in.readObject()); 

そして、これは、いくつかのケースアプリのクラッシュでは、問題となっています。

+4

[チェックされていないキャストに関する警告をどうやって解決するのですか?](https://stackoverflow.com/questions/509076/how-do-i-address-unchecked-cast-warnings) – germi

+0

あなたの質問にはコメントできませんだから、関連する投稿で誰かがそれが解決策であることがわかった:https://stackoverflow.com/a/509230/5554959多分それは助けることができる。 – Fix3r

答えて

1

問題がキャストされたオブジェクトの場合。オブジェクトをクラスに変換して例外を処理するコンバータを定義することができます。

あなたのストリームのリターンJSON文字列ならば、あなたはObejctMapperを使用して、ジャクソンのライブラリを使用して次の方法として、あなたのクラスにJSON文字列に変換することができます:

//create ObjectMapper instance 
    ObjectMapper objectMapper = new ObjectMapper(); 

    //convert json string to object 
    Day day = objectMapper.readValue(jsonData, Day.class); 

    // use day class now 

ので、変換オブジェクトは、ファイルのデータ形式に依存します。

+0

ありがとうございました!今私は試してみる。 –