[解決済み】ユーティリティクラスを作成するにはどうしたらいいですか?重複
質問
ユーティリティメソッドを持つクラスを作りたいのですが、例えば
public class Util {
public static void f (int i) {...}
public static int g (int i, int j) {...}
}
ユーティリティ・クラスを作るのに最も適した方法はどれですか?
プライベートコンストラクタを使用した方が良いですか?
ユーティリティクラスは抽象クラスとした方が良いですか?
何もしない方が良いですか?
解決方法は?
Javaで完全にステートレスなユーティリティクラスを作るには、このクラスを次のように宣言します。
public
と
final
で、インスタンス化を防ぐためにプライベートコンストラクタを持つ。また
final
キーワードはサブクラス化を防ぎ、実行時の効率を向上させることができる。
このクラスには、すべての
static
メソッドを宣言してはいけません。
abstract
(というのは、そのクラスは具象ではなく、何らかの方法で実装しなければならないことを意味するからです)。
クラスには、提供されるユーティリティのセットに対応する名前を付ける必要があります(分類されていない幅広いユーティリティを提供するクラスであれば、"Util" )。
ネストされたクラスがユーティリティクラスでない限り、クラスはネストされたクラスを含むべきではありません(ただし、この方法は複雑になる可能性があり、可読性が損なわれます)。
クラス内のメソッドには、適切な名前を付ける必要があります。
クラス自身のみが使用するメソッドはprivateにする。
クラスは、非終端または非静的なクラス・フィールドを持たないようにしなければなりません。
また、コードの可読性を高めるために、他のクラスから静的にインポートすることもできます(ただし、これはプロジェクトの複雑さに依存します)。
例
public final class ExampleUtilities {
// Example Utility method
public static int foo(int i, int j) {
int val;
//Do stuff
return val;
}
// Example Utility method overloaded
public static float foo(float i, float j) {
float val;
//Do stuff
return val;
}
// Example Utility method calling private method
public static long bar(int p) {
return hid(p) * hid(p);
}
// Example private method
private static long hid(int i) {
return i * 2 + 1;
}
}
おそらく最も重要なのは、各メソッドのドキュメントが正確で説明的であることでしょう。このクラスのメソッドは頻繁に使用される可能性があり、コードを補完するために質の高いドキュメントを用意するのは良いことです。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] Javaです。静的クラス?