codenameone - 地图转换为地图
我有一张地图
Map<String, String[]> newMetaData = new LinkedHashMap();
我用这样的数据填充:
newMetaData.put(
((String) elm.get("compa
问题描述
我有一张地图
Map<String, String[]> newMetaData = new LinkedHashMap();
我用这样的数据填充:
newMetaData.put(
((String) elm.get("companyName")).trim(),
new String[]{
this.storeFile( "logo", (String) elm.get("logoLink") ),
this.storeFile( "profile", (String) elm.get("companyProfile") ),
this.storeFile( "action", (String) elm.get("drash") ),
(String) elm.get("fwtografies")
}
);
StoreFile 是一个返回字符串的函数。我将此地图保存到存储中
Storage.getInstance().writeObject("MetaData", newMetaData);
稍后在代码中,我将上面的地图检索为:
Map<String, String[]> metaData = (Map)Storage.getInstance().readObject("MetaData");
但不是得到 <String, String[] & gt; 的 Map。我得到 <String, Object[] > 的地图
任何帮助表示赞赏
Java 中的泛型是语法糖。它们被编译器擦除并被代号一忽略。这:
Map<String, String[]> newMetaData = new LinkedHashMap<>();
就生成的代码而言,等效于:
Map newMetaData = new LinkedHashMap();
有一些注意事项,因为当您使用诸如 set/put 之类的方法时,第一个版本也会添加强制转换,这在某些情况下可能会触发类强制转换异常。问题是这也可以反向工作,因此应该可以正常工作:
Map<String, String[]> metaData = (Map<String, String[]>)Storage.getInstance().readObject("MetaData");
解决方案
Java 中的泛型是语法糖。它们被编译器擦除并被代号一忽略。这个:
Map<String, String[]> newMetaData = new LinkedHashMap<>();
就生成的代码而言,等效于:
Map newMetaData = new LinkedHashMap();
有一些注意事项,因为当您使用 set/put 之类的方法时,第一个版本也会添加强制转换,这在某些情况下可能会触发类强制转换异常。问题是这也可以反向工作,因此应该可以正常工作:
Map<String, String[]> metaData = (Map<String, String[]>)Storage.getInstance().readObject("MetaData");
推荐阅读
- deep-learning - 使用(DeepVoice | WaveNet | 等)在 2019 年运行深度学习 TTS
- c# - MVVMCross 中从 4.4 迁移到 5.7 时出现 CustomPresenter 错误
- opayo - SagePay V4.0 CHALLENGE 已停止为我工作
- python - 时间处理数组与列表
- vaadin - 如何在对话框中添加网格
- react-native - 为平面列表上的单个项目设置动画
- reactjs - 严重卡住 React Router 问题 URL 更改但未查看或渲染组件 || 反应||Redux
- html - 通过 google 电子表格发送 HTML 时事通讯电子邮件
- c# - selenium c#:如何在测试方法中跳过登录
- serial-port - CP2102 usb-ttl 在我关闭 minicom 之前不会传输数据
我有一张地图
Map<String, String[]> newMetaData = new LinkedHashMap();
我用这样的数据填充:
newMetaData.put(
((String) elm.get("compa
问题描述
我有一张地图
Map<String, String[]> newMetaData = new LinkedHashMap();
我用这样的数据填充:
newMetaData.put(
((String) elm.get("companyName")).trim(),
new String[]{
this.storeFile( "logo", (String) elm.get("logoLink") ),
this.storeFile( "profile", (String) elm.get("companyProfile") ),
this.storeFile( "action", (String) elm.get("drash") ),
(String) elm.get("fwtografies")
}
);
StoreFile 是一个返回字符串的函数。我将此地图保存到存储中
Storage.getInstance().writeObject("MetaData", newMetaData);
稍后在代码中,我将上面的地图检索为:
Map<String, String[]> metaData = (Map)Storage.getInstance().readObject("MetaData");
但不是得到 <String, String[] & gt; 的 Map。我得到 <String, Object[] > 的地图
任何帮助表示赞赏
Java 中的泛型是语法糖。它们被编译器擦除并被代号一忽略。这:
Map<String, String[]> newMetaData = new LinkedHashMap<>();
就生成的代码而言,等效于:
Map newMetaData = new LinkedHashMap();
有一些注意事项,因为当您使用诸如 set/put 之类的方法时,第一个版本也会添加强制转换,这在某些情况下可能会触发类强制转换异常。问题是这也可以反向工作,因此应该可以正常工作:
Map<String, String[]> metaData = (Map<String, String[]>)Storage.getInstance().readObject("MetaData");
解决方案
Java 中的泛型是语法糖。它们被编译器擦除并被代号一忽略。这个:
Map<String, String[]> newMetaData = new LinkedHashMap<>();
就生成的代码而言,等效于:
Map newMetaData = new LinkedHashMap();
有一些注意事项,因为当您使用 set/put 之类的方法时,第一个版本也会添加强制转换,这在某些情况下可能会触发类强制转换异常。问题是这也可以反向工作,因此应该可以正常工作:
Map<String, String[]> metaData = (Map<String, String[]>)Storage.getInstance().readObject("MetaData");
推荐阅读
- deep-learning - 使用(DeepVoice | WaveNet | 等)在 2019 年运行深度学习 TTS
- c# - MVVMCross 中从 4.4 迁移到 5.7 时出现 CustomPresenter 错误
- opayo - SagePay V4.0 CHALLENGE 已停止为我工作
- python - 时间处理数组与列表
- vaadin - 如何在对话框中添加网格
- react-native - 为平面列表上的单个项目设置动画
- reactjs - 严重卡住 React Router 问题 URL 更改但未查看或渲染组件 || 反应||Redux
- html - 通过 google 电子表格发送 HTML 时事通讯电子邮件
- c# - selenium c#:如何在测试方法中跳过登录
- serial-port - CP2102 usb-ttl 在我关闭 minicom 之前不会传输数据