Randbemerkung: Anonyme Klassen in Java

Eine (vordefinierte) Funktion hat Namens- und Typinformation (später) und Auswertungsvorschrift

das ist eigentlich ein Unterprogramm, muß aber als Methode in einem Objekt versteckt werden:

class Function {
    ...
    private Code code;
}
interface Code {
    Object evaluate (List<Object> argv);
}

man braucht eine Klasse, die Code implementiert, aber von dieser nur ein einziges Objekt. Deswegen Klasse lokal und anonym:

static Function add() {
  return new Function(
    ... ,
    new Code() {
      public Object evaluate(List<Object> argv) {
         return iGet(argv,0).add(iGet(argv,1));
      }
    });
}
static BigInteger iGet (List<Object> argv, int i) {
  return (BigInteger) argv.get(i);
}



Johannes Waldmann 2006-02-02