Generic constructors and static methods

Generic Constructor

A Generic Constructor is a constructor that defines its own type parameter(s) independent of the class’s type parameters.

Even if the class is not generic, the constructor can be.

Syntax of a Generic Constructor

class ClassName {
    <T> ClassName(T param) {
        // constructor logic
    }
}
//The <T> appears before the constructor name.Code language: PHP (php)

Example 1: Generic Constructor in a Non-Generic Class

public class Printer {

    public <T> Printer(T message) {
        System.out.println("Constructor received: " + message);
    }

    public static void main(String[] args) {
        Printer p1 = new Printer("LotusJavaPrince");
        Printer p2 = new Printer(100);
    }
}
/*
Constructor received: LotusJavaPrince
Constructor received: 100
*/

Example 2: Generic Constructor in a Generic Class

public class Holder<T> {
    private T value;

    // Generic constructor inside generic class
    public <U> Holder(U input) {
        System.out.println("Generic Constructor with: " + input);
    }

    public void setValue(T value) {
        this.value = value;
    }
}

Generic Static Methods

Since static methods belong to the class, and not instances, they cannot use class-level type parameters (like T in class Box<T>). So, if you want a static method to be generic, you must declare its own type parameters.

public class Utility {

    public static <T> void print(T item) {
        System.out.println("Item: " + item);
    }
}Code language: PHP (php)

Program

public class Utility {

    public static <T> void display(T value) {
        System.out.println("Displaying: " + value);
    }

    public static <T, U> void showPair(T key, U value) {
        System.out.println("Key: " + key + ", Value: " + value);
    }

    public static void main(String[] args) {
        Utility.display("Mahesh");
        Utility.display(2025);
        Utility.showPair("ID", 101);
    }
}
/*
Displaying: Mahesh
Displaying: 2025
Key: ID, Value: 101
*/
Scroll to Top