Because String and Integer are not in the same Object hierarchy.
The casting which you are trying, works only if they are in the same hierarchy, e.g.
In this case, (A) objB or (Object) objB or (Object) objA will work.
Hence as others have mentioned already, to convert an integer to string use:
String.valueOf(integer), or Integer.toString(integer) for primitive,
or
Integer.toString() for the object.