Java にメソッド引数デフォルト値は存在しない

存在するのかしないのか、私自身も、C++ と混同していて、Java で使ったことはないけど(オーバーロードは使ってたけど)、実はあるんだっけ?となって即答出来なかったのでメモ。

C++ には存在するが、Java には存在しないというのが答え。JavaHouse-Brewers ML にそれに関する議論があった。

http://java-house.jp/ml/archive/j-h-b/042280.html#body

から始まる一連のスレッドがそれ。なんで無いかという理由は、引数デフォルト値は読みにくくなる、「一つの目的のための実現手段が複数あり、なおかつ無視できないほど相互に干渉する」・・といったところ。

    class A {
        void foo() {
            foo(10);
        };
        void foo(int param = 10) {
            :
        };
    };

コンパイラも困っちゃうでしょ、ということ。(コンパイルエラーにすればいいのだけど)

オーバーロードのあの無駄に長ったらしくなる感じはまあ、Java っぽいんだろうなあ。