What is a Java ClassCastException?

Java exceptions FAQ: What is a Java ClassCastException?

A Java ClassCastException is an Exception that can occur when you try to improperly convert a class from one type to another. Here’s an example Java program which throws a ClassCastException intentionally:

package com.devdaily.javasamples;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ClassCastExceptionExample {

    public ClassCastExceptionExample() {

        List list = new ArrayList();
        list.add("one");
    
        // ... some time later
    
        Iterator it = list.iterator();
        while (it.hasNext()) {
            // intentionally throw a ClassCastException by trying to cast a String to an
            // Integer (technically this is casting an Object to an Integer, where the Object 
            // is really a reference to a String:
            Integer i = (Integer)it.next();
      }

  }

  public static void main(String[] args) {
      new ClassCastExceptionExample();
  }

}

If you try to run this Java program you’ll see that it will throw the following ClassCastException:

Exception in thread "main" java.lang.ClassCastException: java.lang.String
   at com.devdaily.javasamples.ClassCastExceptionExample.(ClassCastExceptionExample.java:25)
   at com.devdaily.javasamples.ClassCastExceptionExample.main(ClassCastExceptionExample.java:31)

The reason an exception is thrown here is that when I’m creating my list object, the object I store in the list is the String “one,” but then later when I try to get this object out I intentionally make a mistake by trying to cast it to an Integer. Because a String cannot be directly cast to an Integer — an Integer is not a type of String — a ClassCastException is thrown.