Javaにはデフォルトパラメーターはない!!代替方法を徹底解説!

デフォルト引数とは、メソッドを呼び出す際に引数の値が未設定であればデフォルト値を指定できることを指します。
Javaにはデフォルトのパラメーターはありませんが、代替え方法はいくつかあります。

C ++やJavaScriptなど最近のプログラミング言語には、引数に値を指定せずに関数を呼び出すオプションがあります。ですが、Javaのデフォルトパラメータでは、ほかの言語より少しコードを書かないといけません。

ここでは、Javaでデフォルトのメソッドパラメータがどのように機能するかを学びます。

Javaのデフォルトパラメータ

Javaでは、パラメーターの値が事前に定義されているメソッドを宣言することはできません。ですが、簡単なコード構成で実現ができます。

他のプログラミング言語で知られている動作を実装するために使用できる方法がいくつかあります。

・メソッドのオーバーロードを使用する
・入力としてnullを許可する
・Java Varargsでメソッドを宣言する

これらの方法を詳しく見てみましょう。

Javaのデフォルトのメソッドパラメータをオーバーロードを使って実装

Javaでデフォルトのメソッドパラメータを実装する為に一番いい方法は、メソッドのオーバーロードを使用することです。メソッドのオーバーロードを使用すると、同じ名前でパラメーターの数が異なる複数のメソッドを宣言できます。

メソッドのオーバーロードを使用してデフォルトのメソッドパラメータを実装する方法
下記サンプルは、引数の数でメソッドの参照先を変える例です。

唯一の必須パラメーターはクエリ文字列です。見てわかるように、パラメーターの数が最も多いメソッドを実装するだけで済みます。
この単純なメソッドは、そのパラメーターをより複雑なメソッドに渡し、方法の引数にデフォルトのパラメーター値を渡してるにすぎません。

他の方法と比較して、メソッドのオーバーロードを使う1番のメリットは、コードの単純さです。パラメーターセットの内容を簡単に理解する事ができます。
Javaのデフォルトパラメータを使う時は、オーバーロードをお勧めしますが、他の使い方も知っておいた方がいいです。

Null渡し

もう一つの方法は、NULL受け入れ可能なパラメーターを受け入れるメソッドを宣言する方法です。メソッドの実装部分で、どのパラメーターがnullであるかを確認し、それらにデフォルト値を割り当てます。

この方法の例は、下記になります。

この方法は、2つの欠点があります。1つ目は、渡す引数の一部がnullであってもすべての引数を渡す必要がある点です。2つ目は、メソッドの宣言を見ただけではどれがnullを許容するか分からない為、どのパラメーターがnull可能かを認識する必要がある点です。

また開発者がコードを追跡するのが難しくなる為、あまりいい方法とは言えないでしょう。
余談ですが、Java 8 Optionalクラス内で必要とされないパラメーターのラッピングを考える人もいますが、この方法タイプは、入力ではなくメソッドの出力用に設計されています。

Varargsパラメーター

Varargs方法は、同じ型の引数にのみに制限されています。よって、Javaメソッドのデフォルトパラメータの問題は実際には解決されません。ですが、場合によってはそれを検討することもありでしょう。

Varargsを単一の方法パラメータとして使用することも可能です。この方法を使う場合は、デフォルト値を使用するためにnullを渡す必要はありません。ですが、バグやハッキングされるリスクが高まります。これを使うのであれば、メソッドのオーバーロードを使うことをお勧めします。

Writer

Ryotin

現役フリーランスエンジニアです。使ってるエージェントはフライテック!得意言語はJava。月収は75万円。SESのフリーランスではこれ以上稼ぐのは厳しそう...とはいってもサラリーマンの時より倍の収入だから家族も喜んでるけどね!

最新の案件情報