【Java】ユーティリティクラスとは何か?まとめてみました!

f:id:koko55120:20220118140811j:plain
Javaの開発でユーティリティクラスというものを聞いたことはありますか?


開発の現場で、まずユーティリティクラスってなに?というシーンがあり職場でレクチャーを受けました。
自分は今まで聞いたことなかったんですが、かなり便利なんです。


ユーティリティクラスってどんなものなのか?というユーティリティクラスの概念について
現場で学んだことをアウトプットしていきます。




ユーティリティクラスとは?

f:id:koko55120:20210518225115j:plain

そもそもユーティリティという言葉は

英単語で、「役に立つもの」「有用性」「効用」「公益」などの意味。 住宅建築におけるユーティリティールーム(家事室)のこと。


という、一見意味不明なんですが。


とりあえず便利って感じですかね。


その上でユーティリティクラスは、汎用的で便利なクラスということです。


具体的な例を挙げてみましょう。


「便利なメソッド群をstaticな領域にまとめて、使いたい時に簡単に呼び出すという万能なクラス」がユーティリティクラスということです。


簡単に言えば便利で汎用的なメソッド群をstaticで参照できるように定義しておくクラスっていうイメージで良いと思います。


例えばですが、いくつかのクラスでObjectがNullおよび空文字かどうかを判定してbooleanで返したい。
こんなシーンがあったとします。


そんなときに、わざわざクラスごとに「ObjectがNullおよび空文字かどうかを判定してbooleanで返す」メソッドを定義するのは少しめんどくさいですよね・・・。


抽象クラスにまとめて置いてとかでも良いんですが、「ObejectがNullおよび空文字かの判定」ってどんなクラスでも結構使いそうじゃないですか?


それだったら、staticなクラスに定義してパラメータ渡して簡単に呼び出そうよって感じなのがユーティリティクラスの役割ということです。




ユーティリティクラスの構成

f:id:koko55120:20210518225146j:plain

ユーティリティクラスのイメージは説明したので、次は構成についてまとめてみます。


ちょこっと書くとこんな感じです。

public static class test {

 private test(){ //コンストラクタをprivateにしてインスタンス化させない
}

public static boolean method(String o){ //例えば引数に受け取ったオブジェクトのNull判定する場合とかね。
 if (o == null | o.equals("")){ 
return true;
}

public static int methodb(String o){ //例えば引数に受け取ったオブジェクトをintに変えて返すみたいな。
 { 
int a = Integr.parseInt(o);
 return  a;


}

クラスとメソッドのアクセスはstaticにします。メソッドを呼ぶ時は、インスタンス化しないで"クラス名.メソッド名"で呼ぶようなイメージです。


あと、ユーティリティクラスはクラスのインスタンスを実装者にさせないように、コンストラクタはprivateで定義しています。


ユーティリティクラスで定義するメソッドは「なんかこういうロジックのメソッドは使うなぁ」という処理を定義しておくと良いですね。


ユーティリティクラスに定義しておくと便利なメソッドは以下の通りです。

  1. 文字列変換
  2. 空白文字削除
  3. ソート
  4. 日付インスタンス取得


他にも、現場特有で使う必ず行う処理があればユーティリティクラスにメソッド定義しておくと良いでしょう。

ユーティリティクラスのメリット

f:id:koko55120:20210518225300j:plain


ユーティリティクラスのメリットとしては、「共通の機能群みたいな位置づけでいろんなところで使いまわせる」ところではないでしょうか。


あとはメソッドを共通化することで、各クラスのソースコードの量が減ったり、インスタンス生成しないので、データのゴミも増えないところだと思います!




さいごに

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!


私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦


コメントも含めてコンテンツとさせていただきます。


他にもJavaに関する記事を書いていますので、もしよければ読んでみてください!
wataru55120.hatenablog.jp


wataru55120.hatenablog.jp