The main reason we have Generics is Java is for Type Safety. As a result of type safety, we do not need to type-cast collection objects that are using using generic types.
Now look at the below code carefully,
1 package org.code2care.generics;
2
3 import java.util.ArrayList;
4
5 public class GenericExample {
6
7 public static void main(String[] args) {
8
9 ArrayList<Object> objectList = new ArrayList<>();
10 objectList.add(10);
11 objectList.add(10.20);
12 objectList.add("Sam");
13
14 Integer s = objectList.get(0);
15
16
17 }
18 }
At line number 9 we are creating an ArrayList of generic type Object. In the subsequent lines we are adding data to the list of type Integer, Double and String, there is no issue there.
But at line 14, when we try to get the element from the ArrayList we get a compliation error: "incompatible types: java.lang.Object cannot be converted to java.lang.Integer"
Why! This is like catch-22, you are using generics to avoid ClassCastExceptions during runtime and yet you are trying to hold objects of Object type that can cause a runtime exception. The compiler will not let you do this as it is designed to be type-safe.
Example: ArrayList<Object> and ArrayList<Integer> are two distinct types, even though Integer is a subtype of Object.
Facing issues? Have Questions? Post them here! I am happy to answer!
Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.
Follow him on: X
You can also reach out to him via e-mail: rakesh@code2care.org
- Get the current timestamp in Java
- Java Stream with Multiple Filters Example
- Java SE JDBC with Prepared Statement Parameterized Select Example
- Fix: UnsupportedClassVersionError: Unsupported major.minor version 63.0
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to Calculate the SHA Hash Value of a File in Java
- Java JDBC Connection with Database using SSL (https) URL
- How to Add/Subtract Days to the Current Date in Java
- Create Nested Directories using Java Code
- Spring Boot: JDBCTemplate BatchUpdate Update Query Example
- What is CA FE BA BE 00 00 00 3D in Java Class Bytecode
- Save Java Object as JSON file using Jackson Library
- Adding Custom ASCII Text Banner in Spring Boot Application
- [Fix] Java: Type argument cannot be of primitive type generics
- List of New Features in Java 11 (JEPs)
- Java: How to Add two Maps with example
- Java JDBC Transition Management using PreparedStatement Examples
- Understanding and Handling NullPointerException in Java: Tips and Tricks for Effective Debugging
- Steps of working with Stored Procedures using JDBCTemplate Spring Boot
- Java 8 java.util.Function and BiFunction Examples
- The Motivation Behind Generics in Java Programming
- Get Current Local Date and Time using Java 8 DateTime API
- Java: Convert Char to ASCII
- Deep Dive: Why avoid java.util.Date and Calendar Classes
- How to fix Jenkins Plugin Stuck in Uninstallation pending Status - Linux
- Python: Merge DataFrames Pandas Outer Join Example - Python
- Cannot load PowerApps form in SharePoint Online due to repeated authentication - SharePoint
- Add scroll to div element in HTML Css - CSS
- Fix: Jupyter Notebook Black Web Page on Localhost - Python
- How to Change Bootstrap Carousel Slide Speed - Bootstrap
- How to create StackOverflow error in java - Java
- Efficient way to perform HTTP cURL GET/POST Requests with Payload - cURL