Type listType = new TypeToken<LinkedList<User>>(){}.getType();

本文详细解释了Java中使用大括号与new关键字的不同场景,包括普通对象创建与匿名内部类的创建。重点介绍了匿名内部类的应用场景,如在监听器中的使用,并对比了其与常规类实例化的区别。
不加大括号表示很普通的new一个对象。。如果那个类的构造方法是私有的。。肯定不能直接new了。。就会编译报错。。
加上大括号表示你new了一个匿名内部类的对象。。比如new TypeToken<LinkedList<User>>(){}。。表示你new的是一个匿名内部类的对象。。这个匿名类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。

主要你不能理解的原因我想是你不了解内部类。。多看内部类的知识就会明白了。。new TypeToken<LinkedList<User>>(){}匿名内部类常用在监听里面。。比如我们给一个按钮加监听。。比如
JButton btn = new JButton("test");
        btn.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				
			}
		});
 btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。
希望能帮到你吧。。如果还有不明白就HI我吧。。
public static void saveCardsList(Context context, List<Cards> cardsList) { // 检查原始列表是否为null if (cardsList == null) { Log.e("GsonError", "待转换的cardsList为null"); return; } SharedPreferences sp = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); Gson gson = new Gson(); try { // 执行JSON转换 String json = gson.toJson(cardsList); // 检查转换结果 if (json == null || json.isEmpty()) { Log.e("GsonError", "JSON转换结果为空"); return; } // 验证JSON格式是否正确(尝试反序列化检查) Type type = new TypeToken<List<Cards>>() { }.getType(); List<Cards> verifyList = gson.fromJson(json, type); if (verifyList == null) { Log.e("GsonError", "JSON反序列化失败,结果为null"); return; } if (verifyList.size() != cardsList.size()) { Log.w("GsonWarning", "转换前后列表长度不一致,原始:" + cardsList.size() + ",转换后:" + verifyList.size()); } // 转换验证通过,执行保存 editor.putString(KEY_CARDS_LIST, json); editor.apply(); Log.d("GsonSuccess", "JSON转换成功,长度:" + json.length() + ",包含" + cardsList.size() + "个元素"); } catch (JsonSyntaxException e) { Log.e("GsonError", "JSON语法错误:" + e.getMessage()); } catch (JsonIOException e) { Log.e("GsonError", "JSON IO错误:" + e.getMessage()); } catch (Exception e) { Log.e("GsonError", "转换发生未知错误:" + e.getMessage()); } } //恢复列表数据 public static List<Cards> getCardsList(Context context) { sp = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); gson = new Gson(); String json = sp.getString(KEY_CARDS_LIST, null); if (json == null) { return new ArrayList<>(); } // 反序列化JSON为List<Cards> Type type = new TypeToken<List<Cards>>() { }.getType(); return gson.fromJson(json, type); } }我的工具类里是这样写的,需要再写一份吗/
最新发布
08-20
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值