$show=/label

java lang ClassCastException [Fixed]

SHARE:

A quick guide and fix to java lang ClassCastException in java with examples.

1. Overview

In this article, we will learn what is java.lang.ClassCastException in java and how to fix it.

We will look at the meaning of ClassCastException and a few examples of it.

java lang ClassCastException



2. What is the meaning of ClassCastException


From API, ClassCastException is thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. 

If you are not clear what is ClassCastException then look at the below example.

For example, the following code generates a ClassCastException:

Object x = new Integer(0);
System.out.println((String)x);

In this example, we are trying to cast an Integer object into a String. That means converting the Integer object into a String. This operation produced the class cast exception.

The reason behind this error is there is no direct relation between the Integer and String classes.

If there is a Has-a or Is-a relationship between the two classes then the casting is possible, if there is no relation between the classes and if we try to cast it to another class or interface then we get the ClassCastException.


3. Java ClassCastException Examples


A few examples to see in which scenarios we get the class cast exception at runtime.

Example 1
package com.javaprogramto.exception;

public class ClassCastExceptionExample {

	public static void main(String[] args) {

		Object s = "hello";
		Integer i = (Integer) s;
	}
}

Output
Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')
	at com.javaprogramto.exception.ClassCastExceptionExample.main(ClassCastExceptionExample.java:8)

Example 2

In this example, class B extends class B that means B is a child of A. Child class object can be assinged to the parent class object but the parenet class object can not be assinged to the child class.

So here we have casted class A instance to class B. This code is resulted in classcastexception.


package com.javaprogramto.exception.classcaseexception;

public class ClassCastExceptionExample {

	public static void main(String[] args) {
		A a = new A();
		B b = (B) a;
	}
}

class A {

}

class B extends A {

}

Output
Exception in thread "main" java.lang.ClassCastException: class com.javaprogramto.exception.classcaseexception.A cannot be cast to class com.javaprogramto.exception.classcaseexception.B (com.javaprogramto.exception.classcaseexception.A and com.javaprogramto.exception.classcaseexception.B are in unnamed module of loader 'app')
	at com.javaprogramto.exception.classcaseexception.ClassCastExceptionExample.main(ClassCastExceptionExample.java:7)


Example 3
package com.javaprogramto.exception.classcaseexception;

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

public class ClassCastExceptionExample2 {

	public static void main(String[] args) {

		List list = new ArrayList<>();

		list.add(10);
		list.add(20);
		list.add("String");
		list.add(30);

		for (int i = 0; i < list.size(); i++) {
			Integer value = (Integer) list.get(i);
			System.out.println(value);
		}
	}
}

Ouptut
10
20
Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')
	at com.javaprogramto.exception.classcaseexception.ClassCastExceptionExample2.main(ClassCastExceptionExample2.java:18)

This example is resulted in error becaues of list has string in it and we casted each value of list into Integer. Once it found the string then it is not able to cast into the integer. So, ended up in exception.


4. How to fix ClassCastException


ClassCastException is a unchecked exception that is thrown by the JVM at runtime when you do the invalid or illegal casting is done. 

Finding the ClassCastException at the compile time can not be done as similar to the checked exceptions. 

So, we must be careful when we do the explicit casting to the different types.

To fix ClassCastException, we need to follow the strict generics when working with the collections API.
In the above section example 3, a list is created without generic type which did not show any error at the compile time but it produces the casting exception at the runtime.

Look at the below code how ClassCastException is eliminated at the compile time.

Example 4

package com.javaprogramto.exception.classcaseexception;

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

public class ClassCastExceptionExample2 {

	public static void main(String[] args) {

		List<Integer> list = new ArrayList<>();

		list.add(10);
		list.add(20);
		list.add("String");
		list.add(30);

		for (int i = 0; i < list.size(); i++) {
			Integer value = (Integer) list.get(i);
			System.out.println(value);
		}
	}
}

Output
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method add(Integer) in the type List<Integer> is not applicable for the arguments (String)

	at com.javaprogramto.exception.classcaseexception.ClassCastExceptionExample2.main(ClassCastExceptionExample2.java:14)

In the above example, the class cast exception is suppressed and caught at the compile time. So we can take out the string from the list.

Another way is to fix class cast exception is with instanceof oeprator.

Example 5
package com.javaprogramto.exception.classcaseexception;

public class ClassCastExceptionExample3 {

	public static void main(String[] args) {
		C c = new C();

		if (c instanceof D) {
			D d = (D) c;
		} else {
			System.out.println("c is not instance of d. skipping..");
		}
	}
}

class C {

}

class D extends C {

}

Output
c is not instance of d. skipping..

If you know any other ways, please post in the comments we will update the post.

5. Conclusion


In this tutorial, We've seen understood the meaning of Java ClassCastException which is present in the java.lang package.

how to fix java.lang.classcaseexception in java.




COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: java lang ClassCastException [Fixed]
java lang ClassCastException [Fixed]
A quick guide and fix to java lang ClassCastException in java with examples.
https://blogger.googleusercontent.com/img/a/AVvXsEju-07v0CtcGZkDjtRVdPibh0CGALsTQXI1OfL4Ghqlv5pLIu4eyYJ1yAlHrdZpPGqhMfwMZdNRk9Wjm_nJyPYFmJd78pT2XkMIIGoyOYs0slGV7My6gSjJivWCEk5yzfphHTT73ZG5boVs2EQysot9u82xLsuGDF9Ar9ne-nMhyOzCUtSGV1K1XCD0=w640-h328
https://blogger.googleusercontent.com/img/a/AVvXsEju-07v0CtcGZkDjtRVdPibh0CGALsTQXI1OfL4Ghqlv5pLIu4eyYJ1yAlHrdZpPGqhMfwMZdNRk9Wjm_nJyPYFmJd78pT2XkMIIGoyOYs0slGV7My6gSjJivWCEk5yzfphHTT73ZG5boVs2EQysot9u82xLsuGDF9Ar9ne-nMhyOzCUtSGV1K1XCD0=s72-w640-c-h328
JavaProgramTo.com
https://www.javaprogramto.com/2021/12/java-lang-classcastexception.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2021/12/java-lang-classcastexception.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content