My Blog

My WordPress Blog

My Blog

My WordPress Blog

Bound Types Erasure

Java Compiler replaces type parameters in generic type with their bound if bounded type parameters are used.

Example

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
  Box<Integer> integerBox = new Box<Integer>();
  Box<Double> doubleBox = new Box<Double>();
  integerBox.add(new Integer(10));
  doubleBox.add(new Double(10.0));
  System.out.printf("Integer Value :%d\n", integerBox.get());
  System.out.printf("Double Value :%s\n", doubleBox.get());
} } class Box<T extends Number> { private T t; public void add(T t) {
  this.t = t;
} public T get() {
  return t;
} }

In this case, java compiler will replace T with Number class and after type erasure,compiler will generate bytecode for the following code.

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
  Box integerBox = new Box();
  Box doubleBox = new Box();
  integerBox.add(new Integer(10));
  doubleBox.add(new Double(10.0));
  System.out.printf("Integer Value :%d\n", integerBox.get());
  System.out.printf("Double Value :%s\n", doubleBox.get());
} } class Box { private Number t; public void add(Number t) {
  this.t = t;
} public Number get() {
  return t;
} }

In both case, result is same −

Output

Integer Value :10
Double Value :10.0
Bound Types Erasure

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top