>>799
> // C++のアドレス渡し。交換できる。
これで交換できるってんなら、

static void swap(Object[] x, Object[] y){ Object temp = x[0]; x[0] = y[0]; y[0] = temp; }

とかすれば交換できるって話になっちまうんだが。
「アドレス渡し」とやらは Hoge* 自体の交換ができてないんだから交換できない、とした方が説明が楽。