ClassCastException

java.lang.ClassCastException: class java.lang.String cannot be cast to java.lang.Integer

Quick Answer

You are casting an object to an incompatible type. Use instanceof to check the type before casting.

Why This Happens

A ClassCastException occurs when you try to cast an object to a class it is not an instance of. This commonly happens with raw types in collections, incorrect downcasting, or when deserializing objects. Generics help prevent this at compile time.

The Problem

Object obj = "Hello";
Integer num = (Integer) obj; // ClassCastException

The Fix

Object obj = "Hello";
if (obj instanceof Integer) {
    Integer num = (Integer) obj;
} else {
    System.out.println("Object is not an Integer: " + obj.getClass());
}

Step-by-Step Fix

  1. 1

    Identify the incompatible types

    Read the exception message to see what the actual type is and what type you tried to cast to.

  2. 2

    Find the cast operation

    Locate the explicit cast or the implicit cast from raw type usage in your code.

  3. 3

    Use instanceof or generics

    Add an instanceof check before casting, or use generics to enforce type safety at compile time.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free