我会尝试为gwt编写一个JSONparser。
为此,我在服务器端使用lib org.json,在客户端使用com.google.gwt.json.client。
我构建了一些接口来用相同的方法调用这两个lib。
我用:
public class JSONObject extends com.google.gwt.json.client.JSONObject implements IJSONObject
{
...
}
和
public class JSONObject extends org.json.JSONObject implements IJSONObject
{
...
}
所以它像沙姆士一样工作,但有一件事我是不会明白的。
客户端:
JSONParser.parseLenient( sJson ).isObject()
从Type:"com.google.gwt.json.client.JSONObject"返回ans对象
我尝试将它转换到我的自定义JSONObject中,并得到一个ClassCastException。
我的自定义JSONObject从com.google.gwt.json.client.JSONObject扩展而来,并实现了我的IJSONobject。
所以如果我不能转换这个对象,我就不能使用这个界面。
谢谢
发布于 2016-06-09 22:58:56
你肯定会得到ClassCastException的。
原因:
您正在尝试将一个对象"com.google.gwt.json.client.JSONObject“转换为一个对象”公共类JSONObject扩展com.google.gwt.json.client.JSONObject",这是不可能的。
示例:
public class TestClassCast {
public static void main(String[] args) {
A a = new A();
B b = new B();
A b1 = b; // This is possible since class B extends class A
// B a1 = a; // This is not possible, which you are trying to do in your scenario.
}
}
class A {
A(){};
}
class B extends A {
B(){};
}
发布于 2016-06-09 22:55:14
ClassCastException on downcast
我觉得你应该从超级班开始。请试试这个:
public class YourCustomJSON extends com.google.gwt.json.client.JSONValue implement IJSONobject
{
...
}
https://stackoverflow.com/questions/37741416
复制相似问题