Generics Java Tutorial

To handle the transition to generics, Java allows a generic class to be used without any
type arguments. This creates a raw type for the class.

// Demonstrate a raw type.
class Gen { 
  T ob;
   
  Gen(T o) { 
    ob = o; 
  } 
 
  T getob() { 
    return ob; 
  } 

 
public class MainClass { 
  public static void main(String args[]) { 
    Gen iOb = new Gen(88); 
    Gen strOb = new Gen("Generics Test"); 
 
    Gen raw = new Gen(new Double(98.6));
    // Cast here is necessary because type is unknown.
    double d = (Double) raw.getob();
    System.out.println("value: " + d);
    strOb = raw; // OK, but potentially wrong
    String str = strOb.getob();  
  
  // This assignment also overrides type safety.
  raw = iOb; // OK, but potentially wrong
  d = (Double) raw.getob(); 
    
  } 
}
Exception in thread "main" value: 98.6
java.lang.ClassCastException: java.lang.Double
at MainClass.main(MainClass.java:26)