これでもシステムエンジニア

watarunrun

これでもシステムエンジニア

【Java】ユーティリティクラスとは便利なクラスである。ユーティリティそれは、有用性

f:id:koko55120:20190423234331j:plain

Javaの開発でユーティリティクラスというものを聞いたことはありますか?
開発の現場で、まずユーティリティクラスってあるの?みたいなところから始めたり...
自分は、聞いたことなかったんですが、かなり便利なんです。


ユーティリティクラスってどんなものなのか?というのを現場で学んだことをアウトプットしていきます。
ちなみにユーティリティクラスの概念について書いているだけなので詳しいクラスの中身は期待しないでください

ここで話すこと

・ユーティリティクラスってなんなの? 概念的な話
・ ユーティリティクラスの構成 どういうクラスの定義をするのっていう話
・ユーティリティクラスのメリット 使うメリット

ユーティリティクラスってなんなの?


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


という正直意味不明なんですが。
便利であるって感じですかね。


ユーティリティクラスも同じような意味でとにかく便利なクラスです



特徴としては、便利なメソッド群をstaticな領域にまとめて、使いたい時に簡単に呼び出すという万能なクラスです。
例えばですが、いくつかのクラスでObjectがNullおよび空文字かどうかを判定して、booleanで返したい。


そんなときにわざわざクラスごとにメソッドを定義するのはアホくさいですよね。
抽象クラスにまとめておくとかでも良いんですが、ObejectがNullおよび空文字かの判定って結構使いそうじゃないですか?


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


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

ユーティリティクラスのイメージは説明したので次は構成です。
ちょこっと書くとこんな感じ。

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ですね。

なんかこういうのメソッド使うなぁみたいなのを定義しておくと良いですね。

ユーティリティクラスに定義しておきたいものとして
・文字列変換
・空白文字削除
・ソート
・日付インスタンス取得

とかですかね。



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


メリットとしては、共通の機能群みたいな位置づけでいろんなところで使いまわせるところではないでしょうか。
あとは、共通化することでソースコードが減ったり、インスタンス生成しないしゴミも増えない。
staticの呼び出しで何をしているかわかりやすいとかなどじゃないですかね。


まとめ

ユーティリティクラスはstatic領域にある便利な機能群

現場によって、ユーティリティクラスは絶対違うと思うし。ネットで見ると反対派がいるんですね~


ユーティリティクラスについて認識間違ってたらコメントください。