Is it possible to instantiate Type-parameter <T> in Java?


Generics is a concept in Java where you can enable a class, interface and, method, accept all (reference) types as parameters. In other words it is the concept which enables the users to choose the reference type that a method, constructor of a class accepts, dynamically. By defining a class as generic you are making it type-safe i.e. it can act up on any datatype.

Example

 Live Demo

class Student<T> {
   T age;
   Student(T age){
      this.age = age;
   }
   public void display() {
      System.out.println("Value of age: "+this.age);
   }
}
public class GenericsExample {
   public static void main(String args[]) {
      Student<Float> std1 = new Student<Float>(25.5f);
      std1.display();
      Student<String> std2 = new Student<String>("25");
      std2.display();
      Student<Integer> std3 = new Student<Integer>(25);
      std3.display();
   }
}

Output

Value of age: 25.5
Value of age: 25
Value of age: 25

Instantiating the type parameter

The parameter we use to represent type of the object is known as type parameter. In short, the parameter we declare at the class declaration in between <>. In the above example T is the type parameter.

Since the type parameter not class or, array, You cannot instantiate it. If you try to do so, a compile time error will be generated.

Example

In the following Java example we have created a class of generic type named Student where, T is the generic parameter later in the program we are trying to instantiate this parameter using the new keyword.

 Live Demo

class Student<T>{
   T age;
   Student(T age){
      this.age = age;
   }
   public void display() {
      System.out.println("Value of age: "+this.age);
   }
}
public class GenericsExample {
   public static void main(String args[]) {
      Student<Float> std1 = new Student<Float>(25.5f);
      std1.display();
      T obj = new T();
   }
}

Compile time error

On compiling, the above program generates the following error.

GenericsExample.java:15: error: cannot find symbol
      T obj = new T();
      ^
   symbol: class T
   location: class GenericsExample
GenericsExample.java:15: error: cannot find symbol
      T obj = new T();
                  ^
   symbol: class T
   location: class GenericsExample
2 errors
raja
Published on 09-Sep-2019 10:44:13
Advertisements