| COBOL | Java | 
|---|---|
| *> Consuming a generic method via type inference
class-id Generics public.
01 point type IPoint[binary-double].
01 constrainedPoint type ConstrainedPoint[type PointImpl].
01 justAPoint type Point[string, string].
method-id init.
    *> initialize generic variables
    set point = new PointImpl()
    set constrainedPoint = new ConstrainedPoint[type PointImpl]()
    set justAPoint = new Point[string, string]()
    *> use generic variables
    invoke point::makePoint(1, 2, 3)
    invoke constrainedPoint::makeConstrainedPoint(point)
    set justAPoint::varT to "varT's value"
    set justAPoint::varN to "varN's value"
end method.
end class. | // Consuming a generic method 
public class generics {
    IPoint<Long> point;
    ConstrainedPoint<PointImpl> cPoint;
    Point<String, String> justAPoint;
    
    public void init() {
        // initialize generic variables
        point = new PointImpl();
        cPoint = new ConstrainedPoint<PointImpl>();
        justAPoint = new Point<String, String>();
        // use generic variables
        point.makePoint(1l, 2l, 3l);
        cPoint.makeConstrainedPoint(point);
        justAPoint.varT = "varT's value";
        justAPoint.varN = "varN's value";
    }
} | 
Portions of these examples were produced by Dr. Frank McCown, Harding University Computer Science Dept, and are licensed under a Creative Commons License.
| COBOL | Java | 
|---|---|
| *> Generic interface
interface-id IPoint using T
method-id makePoint using T (x as T, y as T, z as T).
end method.
end interface.
*> Generic class
class-id Point using T, N.
01 varT T public.
01 varN N public.
end class.
*> Generic class with constraints
class-id ConstrainedPoint using T.
constraints.
constrain T implements type IPoint[binary-double].
method-id makeConstrainedPoint using N (x as N).
constraints.
    constrain N implements type IPoint[binary-double].
end method.
end class.
*> Class with generic interface
class-id PointImpl
    implements type IPoint[binary-double].
method-id makePoint using T (x as T, y as T, z as T).
end method.
end class. | // Generic interface
interface IPoint<T> {
    void makePoint(T x, T y, T z);
}
// Generic class
class Point<T, N> {
    public T varT;
    public N varN;
}
// Generic class with constraints
class ConstrainedPoint<T extends IPoint<Long>> {
    <N extends IPoint<Long>> void makeConstrainedPoint(N x) {
    }
}
// Class with generic interface
class PointImpl implements IPoint<Long> {
    @Override
    public void makePoint(Long x, Long y, Long z) {
    }
} | 
Portions of these examples were produced by Dr. Frank McCown, Harding University Computer Science Dept, and are licensed under a Creative Commons License.