XMLファイルからデータをインポートして内部的に使用します。今はuint値がありますが、これは必須ではありません(XSDによる)。どのように私のクラスでは、この動作をマッピングします(値が存在するかどうかは、不明であるが、私は、実行時に知っておく必要があります)オプションのクラスメンバー
基本的に私は3つのソリューションを参照してください:
ソリューションを今ここで質問です1:
public class Solution1 {
private int optionalVal;
public boolean isSetOptionalVal() {
return (optionalVal>=0);
}
public void setOptionalVal(int val) {
optionalVal = val;
}
public void unSetOptionalVal() {
optionalVal = -1;
}
public int optionalVal() {
if(isSetOptionalVal()) {
return optionalVal;
} else {
return -1;
}
}
}
解決方法2:使用値は、その私たちは「-設定されていない」として、彼らはフラグの値に無効であることを知っている箱入りのクラスを使用して値が「ではない、設定されている場合null
に設定します「:
public class Solution2 {
private Integer optionalVal;
public boolean isSetOptionalVal() {
return (optionalVal!=null);
}
public void setOptionalVal(int val) {
optionalVal = val;
}
public void unSetOptionalVal() {
optionalVal = null;
}
public int optionalVal() {
if(isSetOptionalVal()) {
return optionalVal;
} else {
return -1;
}
}
}
解決策3:これらの問題を解決するために私の提案ですが、私は本当にそれらのいずれか好きではない
public class Solution3 {
private int optionalVal;
private boolean optionalValSet;
public boolean isSetOptionalVal() {
return (optionalValSet);
}
public void setOptionalVal(int val) {
optionalVal = val;
optionalValSet = true;
}
public void unSetOptionalVal() {
optionalValSet = false;
}
public int optionalVal() {
if(isSetOptionalVal()) {
return optionalVal;
} else {
return -1;
}
}
}
:「-設定されていない」として値を記述し、追加の変数を使用してください。
ソリューション1は、多分私は、無効な値を判断できない点がどこかにあり、非常にハックようです。
解決策2は実際には私が使用している解決策ですが、メンバ変数のいくつかについては追加情報が必要なだけなので、いくつかの変数をボックス型として使用したり、プリミティブ(矛盾しているようです) (私は本当に好きではない)ボックス型を常に使用している。
解決策3は最もクリーンなようですが、ここで私はいくつかの場所でブールが正しく設定されていないと心配しています。これはエラーを見つけるのが難しいでしょう(私はすでに多くのコードを持っていますいくつかの要素がちょうど最近、XMLに設定されていないことを問題、)
そう...あなたは「オプションバリュー」-problemを解決するためのソリューションとして何を好むだろうが - 多分よりよい解決策がありますか? この問題は一般にどのように処理されますか?
メモ: "inconsisten":異なる動作/定義を持つ変数が一貫しているように見えるのはなぜですか?いくつかの値が 'null'であり、他の値がそうでない場合、それらは異なって見えるべきです。 –
私は/私はまだ変数の異なる使用について懸念していた。矛盾することによって、正しい比較メソッドをどこでも使用するようにしなければならないと言いました( '=='はボックス型を比較することができません)。 –