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:半ば冗談なのだけど。