Articles of java

使用GSON反序列化generics

我在我的Android应用程序中执行Json反序列化时遇到了一些问题(使用Gson库) 我上过这样的课 public class MyJson<T>{ public List<T> posts; } 反序列化的调用是: public class JsonDownloader<T> extends AsyncTask<Void, Void, MyJson<T>> { … protected MyJson<T> doInBackground(Void… params) { … Reader reader = new InputStreamReader(content); GsonBuilder gson = new GsonBuilder(); Type collectionType = new TypeToken<MyJson<T>>() {}.getType(); result = gson.create().fromJson(reader, collectionType); … } } 问题是result.posts列表后调用持有一个LinkedTreeMap对象数组(具有正确的值,所以问题是反序列化),而不是MyJson对象。 当我使用MyObject而不是T时,一切运行良好,MyObject是正确的。 那么是否有任何方法来实现反序列化调用而不创build自定义的反序列化器?

JsonMappingException:超出START_ARRAY标记

鉴于以下.json文件: [ { "name" : "New York", "number" : "732921", "center" : [ "latitude" : 38.895111, "longitude" : -77.036667 ] }, { "name" : "San Francisco", "number" : "298732", "center" : [ "latitude" : 37.783333, "longitude" : -122.416667 ] } ] 我准备了两个类来表示包含的数据: public class Location { public String name; public int number; public GeoPoint center; […]

并发修改exception:添加到ArrayList

问题发生在 Element element = it.next(); 包含该行的这段代码在OnTouchEvent for (Iterator<Element> it = mElements.iterator(); it.hasNext();){ Element element = it.next(); if(touchX > element.mX && touchX < element.mX + element.mBitmap.getWidth() && touchY > element.mY && touchY < element.mY + element.mBitmap.getHeight()) { //irrelevant stuff.. if(element.cFlag){ mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY)); element.cFlag = false; } } } 所有这些都在synchronized(mElements)里面,其中mElements是一个ArrayList<Element> 当我触摸一个Element ,它可能会激活cFlag ,它会创build另一个具有不同属性的Element ,这些属性会在不到一秒的时间内从屏幕上消失。 这是我创造粒子效果的方法。 我们可以调用这个“粒子”的crack […]