我会尝试为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()
从类型返回ans对象:" com.google.gwt.json.client.JSONObject"
我尝试将其转换为我的自定义JSONObject并获得ClassCastException。
我的自定义JSONObject从com.google.gwt.json.client.JSONObject扩展并实现了我的IJSONobject。
因此,如果我无法投射该物体,我就无法使用该界面。
谢谢
答案 0 :(得分:2)
您肯定会得到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(){};
}
答案 1 :(得分:0)
关于向下转换的ClassCastException
我认为你应该从超级课程延伸出来。 请试试这个:
public class YourCustomJSON extends com.google.gwt.json.client.JSONValue implement IJSONobject
{
...
}