Skip to main content

Java Generics - A Guide to Parameterizing Types in Java

Java is a popular programming language known for its versatility and ability to handle complex applications. One of the features that makes Java powerful is its support for generics.

Generics is a way to make Java code more reusable and flexible by allowing classes, methods, and interfaces to be parameterized with types. This means that we can write code that can work with different types of data without having to create separate implementations for each type.

An Example of Generics in Java

For example, let's consider a simple ArrayList class that can store a list of integers:

import java.util.ArrayList;

public class IntList {
    private ArrayList<Integer> list = new ArrayList<>();

    public void add(int value) {
        list.add(value);
    }

    public int get(int index) {
        return list.get(index);
    }
}

In this code, the ArrayList is parameterized with the Integer type. This means that the IntList class can only store integers. If we wanted to create a similar class that could store a list of strings, we would need to create a separate implementation of the ArrayList:

import java.util.ArrayList;

public class StringList {
    private ArrayList<String> list = new ArrayList<>();

    public void add(String value) {
        list.add(value);
    }

    public String get(int index) {
        return list.get(index);
    }
}

With generics, we can avoid this duplication of code and create a single implementation that can handle any type of data:

import java.util.ArrayList;

public class GenericList<T> {
    private ArrayList<T> list = new ArrayList<>();

    public void add(T value) {
        list.add(value);
    }

    public T get(int index) {
        return list.get(index);
    }
}

In this code, the GenericList class is parameterized with the T type, which is a placeholder for any type of data. This means that we can create a list of integers by instantiating a GenericList<Integer> object:

GenericList<Integer> intList = new GenericList<>();
intList.add(1);
intList.add(2);
intList.add(3);
System.out.println(intList.get(1)); // Output: 2

We can also create a list of strings by instantiating a GenericList<String> object:

GenericList<String> stringList = new GenericList<>();
stringList.add("Hello");
stringList.add("World");
System.out.println(stringList.get(0)); // Output: Hello

Benefits of Generics in Java

Generics provide several benefits in Java:

  • Type Safety: Generics help to catch type mismatches at compile time rather than at runtime. This makes the code more reliable and easier to maintain.
  • Code Reusability: Generics allow us to write code that can work with different types of data without duplicating code. This saves time and effort and makes the code more maintainable.
  • Performance: Generics can improve performance by eliminating the need for type casting, which can be expensive.

Conclusion

Generics is an essential feature of Java that allows us to write flexible and reusable code. By parameterizing types, we can create classes, methods, and interfaces that can work with different types of data without duplicating code. This makes the code more reliable, maintainable, and performant.

Comments

Popular posts from this blog

JSP page directives

A jsp page directive looks like this: <%@ directive attribute="value" %> I am not gonna explain each and every page directives here . I would like to discuss about two page directives  which is import and include. First of all consider the import directive . The following simple program illustrate the use of import page directive: The output would be something looks like this: <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%>  <%@ page import="java.util.Date" %>   //page directive <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Jsp Basics</title> </head> <body> <%=new Date() %> </body> </html> Tue Nov 12 17:42:34 I...

a simple example for jdbc PreparedStatement

a simple example for PreparedStatement package basics.in.java.blogspot.in; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Main { private static final String USERNAME="root"; private static final String PASSWORD=""; private static final String CONN_STRING="jdbc:mysql://localhost/basicsinjavablogspot"; public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection conn=null; Statement stmt=null; ResultSet rs=null; try { conn= DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD); System.out.println("database connection successful"); //stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); String sql="select * fr...