Cons

GenericsなConsをLinkListのように使う*1ことで任意個のGenerics型を指定できる。ただし、Generics型指定がとても面倒になってしまうし、Consを大量に作らなければならないし、……と特に利点はない。
Cons.java

public class Cons < Car, Cdr > {
    final public Car car;
    final public Cdr cdr;
    public Cons(Car car, Cdr cdr) {
        super();
        this.car = car;
        this.cdr = cdr;
    }

    public void toString(StringBuffer buffer) {
        if (this.car != null) {
            buffer.append(this.car);
            buffer.append(" ");
        }
        if (this.cdr == null) {
        } else if (this.cdr instanceof Cons) {
            Cons cons = (Cons)this.cdr;
            cons.toString(buffer);
        } else {
            buffer.append(". ");
            buffer.append(this.cdr);
            buffer.append(" ");
        }

    }
    public String toString() {
        StringBuffer buffer = new StringBuffer("( ");
        this.toString(buffer);
        buffer.append(")");
        return buffer.toString();
    }
}

*1:半ば冗談なのだけど。