当前位置:网站首页>SharedPreferences 保存List<Bean> 到本地并解决com.google.gson.internal.LinkedTreeMap cannot be cast to异常
SharedPreferences 保存List<Bean> 到本地并解决com.google.gson.internal.LinkedTreeMap cannot be cast to异常
2022-07-02 22:10:00 【怀化纱厂科比】
最近有阵子没写博客了,跳槽了,转了个方向,是我之前一直想去的领域,我也准备了好一阵子,找这个方向的工作,运气不错,遇到了好的老大,这几天计划了下,今年后续计划,从2方面出发,一方面记录日常遇到问题,一方面梳理源码
今天帖子内容说下遇到的,大概说下场景,需要讲一个List <Bean > 保存在本地用SP,网上搜到很多帖子,本来是想找个不用GSON的,但是实在是没找到,应为是在SystemUI层改,后面没办法,我在 android.bp 文件里面加入了
java_import {
name: "core-settings",
jars: ["libs/core.jar"],
sdk_version: "current",
}
继续说,网上找到的方法类
public class ListDataSave {
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
public ListDataSave(Context mContext) {
preferences = mContext.getSharedPreferences("stock_info", Context.MODE_PRIVATE);
editor = preferences.edit();
}
/**
* 保存List
* @param tag
* @param datalist
*/
public <T> void setDataList(String tag, List<T> datalist) {
if (null == datalist || datalist.size() <= 0)
return;
Gson gson = new Gson();
//转换成json数据,再保存
String strJson = gson.toJson(datalist);
editor.clear();
editor.putString(tag, strJson);
editor.commit();
}
/**
* 获取List
* @param tag
* @return
*/
public <T> List<T> getDataList(String tag) {
List<T> datalist=new ArrayList<T>();
String strJson = preferences.getString(tag, null);
if (null == strJson) {
return datalist;
}
Gson gson = new Gson();
datalist = gson.fromJson(strJson, new TypeToken<List<T>>() {
}.getType());
return datalist;
}
}
问题点:
运行这段代码后,我发现出了异常:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
然后我断点看了发下,抛出这种异常的原因就是因为取出的时候使用Gson解析Json数据过程中,运行充抛出这样的问题异常的,简单来说就是在类中带有泛型时,gson无法识别其中的泛型而转成了LinkenTreeMap的类型。
解决办法就是:在使用泛型过程中,必须要具体到某一个类,不用使用泛型代替。
吧上面的T 改成你要用的bean 就能解决
边栏推荐
- golang入门:for...range修改切片中元素的值的另类方法
- SQL advanced syntax
- Prometheus deployment
- Realize the linkage between bottomnavigationview and navigation
- psnr,ssim,rmse三个指标的定量分析
- Jerry's prototype has no touch, and the reinstallation becomes normal after dismantling [chapter]
- 景联文科技低价策略帮助AI企业降低模型训练成本
- 情感对话识别与生成简述
- Learning Websites commonly used by circuit designers
- Jerry's built-in short press and long press, no matter how long it is, it is a short press [chapter]
猜你喜欢

Explain promise usage in detail

Jinglianwen technology's low price strategy helps AI enterprises reduce model training costs

Value sequence < detailed explanation of daily question >

mysql重置密码,忘记密码,重置root密码,重置mysql密码

BBR 遭遇 CUBIC

China Academy of information technology, Tsinghua University, Tencent security, cloud native security, industry university research and use strong alliance!

RecyclerView结合ViewBinding的使用
![[adjustment] postgraduate enrollment of Northeast Petroleum University in 2022 (including adjustment)](/img/a3/d8421ea1539eba08bf7a5a629d92e6.jpg)
[adjustment] postgraduate enrollment of Northeast Petroleum University in 2022 (including adjustment)

FOC矢量控制及BLDC控制中的端电压、相电压、线电压等概念别还傻傻分不清楚
![[羊城杯2020]easyphp](/img/12/da28f738e50e625b0a66a94af3703d.png)
[羊城杯2020]easyphp
随机推荐
潘多拉 IOT 开发板学习(HAL 库)—— 实验4 串口通讯实验(学习笔记)
LC173. 二叉搜索树迭代器
Lambda expression: an article takes you through
阿里云有奖体验:如何使用 PolarDB-X
[chestnut sugar GIS] ArcScene - how to make elevation map with height
Analyse des données dossiers d'apprentissage - - analyse simple de la variance à facteur unique avec Excel
Ping domain name error unknown host, NSLOOKUP / system d-resolve can be resolved normally, how to Ping the public network address?
Pytorch training CPU usage continues to grow (Bug)
Qt QProgressBar详解
Set right click to select vs code to open the file
P7072 [csp-j2020] live broadcast Award
MySQL reset password, forget password, reset root password, reset MySQL password
Data analysis learning records -- complete a simple one-way ANOVA with Excel
Solving ordinary differential equations with MATLAB
Configuration clic droit pour choisir d'ouvrir le fichier avec vs Code
antd组件upload上传xlsx文件,并读取文件内容
[羊城杯2020]easyphp
程序员版本的八荣八耻~
[Solved] Splunk: Cannot get username when all users are selected“
Minimum spanning tree