Cannot cast to an Extended Class in Java Cannot cast to an Extended Class in Java android android

Cannot cast to an Extended Class in Java


jsonClients.getJSONObject(0) returns an object of the type JSONObject which is your parent type.

You cannot cast it to the inherited type. It only works the other way, i.e. casting an inherited class to a parent class. This has nothing to do with your objects in particular, it just the way inheritance works.

Because you get an instance of JSONObject from the method and you cannot control how it's instantiated, you could add a constructor to your MyJSONObject class to create an object from the parent object:

public MyJSONObject(JSONObject parent) {    super(parent.toString());}

And use it this way:

JSONObject parent = jsonClients.getJSONObject(0);MyJSONObject child = new MyJSONObject(parent);


The problem you have is that the objects inside the JSONArray (I presume the JSONArray object is created by the library) do not contain MyJSONObject objects that are defined by you.

Your code would work only if you created the JSONArray yourself and populated it with MyJSONObject objects.

Given what you are trying to achieve with this "extended functionality", I think inheritance is much of an overkill.

Why not just use a helper method?

public Integer getIntegerUnlessNull(JSONObject, String key) throws JSONException {    String key_value = object.getString (key);    if ( key_value.equals("null") ) {        return null;    } else {        return Integer.parseInt( key_value );    }}

Then you can just do this:

Integer getInteger = getIntegerUnlessNull(object, "key");if (getInteger == null) {    // if null do something}