java.lang.String无法强制转换为model.AtvLanguage

时间:2016-12-15 10:19:29

标签: android casting persistence

我使用Hawk库来保存数据。我面临检索数据的问题。

当我执行下一个代码来检查存储的对象的值时,但是sais它无法转换该值。

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.test.app.model.AtvLanguage

代码:

 if(Hawk.contains("ATV_LANGUAGE")){
            atvLanguage = (AtvLanguage)Hawk.get("ATV_LANGUAGE");  // Fail point
        }else{
            atvLanguage.setLanguageCodes("", getString(R.string.str_en));
        }

put方法:

public void updateSelectedLanguage(String iso6391, String iso6392){

        AtvLanguage atvLanguageTmp = new AtvLanguage(iso6391, iso6392);
        Hawk.put("ATV_LANGUAGE", atvLanguageTmp);

    }

AtvLanguage pojo:

public class AtvLanguage implements Serializable {

    @SerializedName("iso6391")
    @Expose
    private String iso6391;

    @SerializedName("iso6392")
    @Expose
    private String iso6392;

    public AtvLanguage() {
    }

    public AtvLanguage(String iso6391, String iso6392) {
        setLanguageCodes(iso6391, iso6392);
    }

    public String getIso6391() {
        return iso6391;
    }

    public void setIso6391(String iso6391) {
        this.iso6391 = iso6391;
    }

    public String getIso6392() {
        return iso6392;
    }

    public void setIso6392(String iso6392) {
        this.iso6392 = iso6392;
    }

    // ISO 639-2 is the language code with 3 chars, like ENG or SPA.
    public void setLanguageCodes(String iso6391, String iso6392){

        if(iso6391.isEmpty() && !iso6392.isEmpty()){

            if(iso6392.equalsIgnoreCase("ENG"))
                setIso6391("en");
            else if(iso6392.equalsIgnoreCase("ESP"))
                setIso6391("es");

            setIso6392(iso6392);

        }else if(!iso6391.isEmpty() && iso6392.isEmpty()){

            if(iso6391.equalsIgnoreCase("en"))
                setIso6392("ENG");
            else if(iso6391.equalsIgnoreCase("es"))
                setIso6392("ESP");

            setIso6391(iso6391);

        }

    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        AtvLanguage that = (AtvLanguage) o;

        return new EqualsBuilder()
                .append(getIso6391(), that.getIso6391())
                .append(getIso6392(), that.getIso6392())
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(getIso6391())
                .append(getIso6392())
                .toHashCode();
    }

    @Override
    public String toString() {
        return "AtvLanguage{" +
                "iso6391='" + iso6391 + '\'' +
                ", iso6392='" + iso6392 + '\'' +
                '}';
    }
}

0 个答案:

没有答案