Map <string,string [] =“”>转换为Map <string,object [])=“”

时间:2018-09-01 10:44:05

标签: codenameone

=“”

我有一张地图

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");

但不是获取

的Map

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

Java中的泛型是语法糖。它们在很大程度上被编译器擦除,并被代号One忽略。这个:

Map<String, String[]> newMetaData = new LinkedHashMap<>();
就生成的代码而言,

与此等效:

Map newMetaData = new LinkedHashMap();

有一些警告,因为当您使用诸如set / put之类的方法时,第一个版本还会添加强制类型转换,在某些情况下可能触发类强制转换异常。事实是,它也可以反向运行,因此应该可以正常工作:

Map<String, String[]> metaData = (Map<String, String[]>)Storage.getInstance().readObject("MetaData");