| COBOL | Java | 
|---|---|
| *> Generic class class-id Point3D using T. *> With constraints class-id Point3D using T. constraints. constrain T implements type IComputable. *> Generic interface interface-id IComputable using T. *> Generic method
method-id MakePoint3D static public using T.
procedure division using by value
       x as T y as T z as T
       returning ret as type Point3D[T].
       
*> With constraints
method-id MakePoint3D static public using T.
constraints.
   constrain T implements type IComputable.*> Generic value type
valuetype-id container using T Y.
   01 a T public.
   01 b Y public.
end valuetype.
*> With constraints
valuetype-id container using T Y.
constraints.
   constrain T implements type IComputable.
*> Generic iterator, use a parametrised class
class-id a using T.
iterator-id itg static.
01 val binary-long value 1.
procedure division using by value x as T yielding y as T.
    perform until val = 50
        add 1 to val
        set y to x *> Just for example!
        goback
    end-perform
end iterator.
       
end class.
*> To use, parametrise the class
perform varying thg through type a[string]::itg("Dog")
    display thg
end-perform
 | // Generic class
class Point3D <T>
// Generic class with constraints
class Point3D_c <T extends IComputable>
//Generic interface
interface IComputable<T>
                 
// Generic method
public static <T> Point3D MakePoint3D(T x, T y, T z) 
{
    return new Point3D(x, y, z);
}
	
// Generic method with constraints
public static <T extends IComputable> Point3D MakePoint3D(T x, T y, T z) 
{
	return new Point3D<T>(x, y, z);
}
// No value type in Java, so generic simple class instead
class container<T, Y>
{
    public T a;
    public Y b;
}
// No value type in Java, so simple generic class with constraints
class container<T extends IComputable, Y> 
// Generic iterator, use a parameterised class
class a<T>
{
    public static <T> T itg(T x)
    {
        int val = 1;
        while (val < 50)
        {
            val++;
            return x;
        }
    }
}
for (String dog : a<string>) 
    System.out.println(dog); | 
Portions of these examples were produced by Dr. Frank McCown, Harding University Computer Science Dept, and are licensed under a Creative Commons License.