さらに凄いバカなプログラムを作ろう3

http://d.hatena.ne.jp/nowokay/20070324
もう一つアイデアを思いついたので、書いてみました。ただし、実行環境依存なコードなので他の人のところでは動かないかもしれません・・・。とりあえず、Windows上のJDK1.5.0_11とJDK1.6.0では動きました。
今回の実装でいまいちなところは、条件が満たされないときに元のメソッドをreturnできないので、ネストが深くなってしまい読みにくいところですね。ちょっと書き方を変えてそれっぽくしてみました。楽しんで頂ければ幸いです。

public class SortedPrinter2 {
	public static void print(final int[] data) {
		IF (data == null, new Execuable() {public void execute() {
			System.out.println("Nullです");
		}}, new Execuable() {public void execute() {
			IF (data.length == 0, new Execuable() {public void execute() {
				System.out.println("空です");
			}}, new Execuable() {public void execute() {
				FOR (0, data.length - 1, new Iteratable() {public void execute(final int index) {
					FOR (index + 1, data.length, new Iteratable() {public void execute(final int index2) {
						IF (data[index] > data[index2], new Execuable() {public void execute() {
							int swap = data[index];
							data[index] = data[index2];
							data[index2] = swap;
						}});
					}});
				}});
				FOR (0, data.length, new Iteratable() {public void execute(final int index) {
					IF (index != 0, new Execuable() {public void execute() {
						System.out.print(" ");
					}});
					System.out.print(data[index]);
				}});
				System.out.println();
			}});
		}});
	}

	public static void main(String[] args) {
		print(new int[]{14, 13, 71, 2, 24, 19});
		print(new int[]{3, 2});
		print(new int[]{5});
		print(new int[]{});
		print(null);
		print(new int[]{14, 13, 71, 2, 24, 19, 14, 15});
		print(new int[]{3, 2, 3, 2});
	}


	public static void IF(final boolean b, final Execuable truePart, final Execuable falsePart) {
		Execuable[] result = new Execuable[] {truePart, falsePart};
		result[convertInt(b)].execute();
	}
	public static void IF(final boolean b, final Execuable truePart) {
		IF (b, truePart, new NullExecuable());
	}
	public static void FOR(final int start, final int finish, final Iteratable iterable) {
		IF (start < finish,
				new Execuable() {
					public void execute() {
						iterable.execute(start);
						FOR (start + 1, finish, iterable);
					}
				}
		);
	}
	// @:true, 1: false
	private static int convertInt(boolean b) {
		Boolean bool = Boolean.valueOf(b);
		int hash = bool.hashCode();
		return (hash - 1231) / 6;
	}
}

interface Execuable {
	void execute();
}
interface Iteratable {
	void execute(int index);
}
class NullExecuable implements Execuable {
	public void execute() {}
}