Javaでクラスのフィールドを定義する際にコンストラクタでインスタンス変数に不変な値を持たせる場合、以下の2つは変わらないような気がするのですが、使い分けた方が良い状況とかはあるのでしょうか?
- public finalなフィールドで直接アクセスする。
- privateなフィールドにして、getterのみ用意する。
具体的には例外クラスにエラーコードなんかを持たせたい場合に、
java
1public SomethingException extends Exception { 2 public final int errorCode; 3 // コンストラクタ 4 public SomethingException(int errorCode) { 5 super(); 6 this.errorCode = errorCode 7 } 8}
というようにすると、外部からは直接フィールドを参照できるので、コードの見通し的にもメリットがあるのかなと個人的には思います。
というより不変な値の場合はわざわざgetterとか用意しないで、こういう方法で持たせるのがセオリーなのでしょうか?
「どちらがどういう状況に優れている」というようなことをご教授いただけたら幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 04:46
2020/09/11 04:49