私はutilとして動作しなければならないクラスを持っています。インスタンスは必要ありません。含まれているものはすべてstatic
のメンバーとstatic
の関数です。だからこそ、何をするのが最善の方法でしょうか? final
とprivate
のコンストラクタをjavaのMath
クラスとして作成するか、コンストラクタをprivate
にしますfinal
? utilのクラスのutilとしてクラスを作る最も良い方法は?
答えて
private
コンストラクタは、によって、クラスfinal
をマークする必要は十分ではありませんプライベートコンストラクタを持つことができません
コンストラクタをprivate
にすると、まだreflection
を使ってアクセスできます。
より良いアプローチは、スローAssertionError
コードの下
public class Util {
private Util() {
throw new AssertionError("Can't instantiate");
}
// static methods
}
が
public class Test {
public static void main(String[] args) {
try {
Constructor<Util> utilC = Util.class.getDeclaredConstructor();
utilC.setAccessible(true);
Util u = utilC.newInstance(); // instance
} catch (Exception e) {
// exception handling
}
}
}
、あなたが必要この関数は静的でconstructor.because、あなたはこのように使用することができます提供していない:Util.a()
私は彼が静的メソッドの利点を知っていると確信しています。彼は、クラスを抽象的にするか、非公開のコンストラクタで非最終的にするかを考えています。彼は基本的にどちらがベストプラクティスと考えられているかを尋ねています。 – alexbt
thanks.in私の意見では、クラスは静的メソッドを提供する場合は、プライベートコンストラクタを使用してより良い – Melody4java
- 1. クラス内のモジュールをインポートする最も良い方法は?
- 2. xmlレイアウトファイルからカスタムViewクラスを作成する最も良い方法は?
- 3. Pharo Smalltalkクラスの動作を拡張する最も良い方法は?
- 4. フラスコセッションをファイルとして保存する最も良い方法
- 5. 他のクラスの中でPHPクラスを使用する最も良い方法は?
- 6. FlexでWYSIWYGを作成する最も良い方法は?
- 7. ルータのネットワークGUIを作成する最も良い方法は?
- 8. スカラベースのコマンドラインスクリプトを作成する最も良い方法は?
- 9. モデル検索フォームを作成する最も良い方法は?
- 10. divのグリッドを作成する最も良い方法は?
- 11. HTML5 Canvasでレイヤーを作成する最も良い方法は?
- 12. angular2でカスタムモーダルダイアログを作成する最も良い方法は?
- 13. クエリを作成する最も良い方法は?
- 14. ES6でクラスをインポートして拡張する最も良い方法
- 15. Flash AS3独立したクラスを伝達する最も良い方法は?
- 16. Clearcaseで最も良い方法は?
- 17. Djangoバックエンドとビデオチャットを実装する最も良い方法は?
- 18. Macとiphoneを通信する最も良い方法は?
- 19. Eclipseで新しいマルチファイルウィザードプラグインを作成する最も良い方法は?
- 20. シェルスクリプトを使用してダイナモdbテーブルを作成する最も良い方法
- 21. arraylistのハッシュマップを作成する最も良い方法
- 22. Javaで空のマップを作成する最も良い方法
- 23. チェッカーボードの座標を作成する最も良い方法
- 24. iphoneアプリケーション内でフォームを作成する最も良い方法
- 25. プロファイルページを作成する最も良い方法PHP/JS/MYSQL
- 26. xcodeのレイアウトグリッドを作成する最も良い方法
- 27. リストアイテムを作成する最も良い方法
- 28. jscery ui with typescriptを作る最も良い方法
- 29. 親から子オブジェクトを作成する最も良い方法
- 30. プログラムで画像を作成する最も良い方法
に、それはあまり問題ではないものは何でもええし、プライベートコンストラクタをインスタンス化することです。コンストラクタがプライベートであれば、それをサブクラス化することはできません。 –
最終的なものではないがプライベートctorを持っている場合でも、内部静的クラスによってサブクラス化することができます。それが最終的なものであっても私的なものであっても、読者がその目的を伝えることがより容易になるので、私はそれを行うでしょう。 – flakes
多少の複製:http://stackoverflow.com/questions/309553/should-helper-utility-classes-be-abstract and http://stackoverflow.com/questions/12538487/utility-class-what-is- the-correct-approachとhttp://stackoverflow.com/questions/25223553/how-can-i-create-an-utility-class – alexbt