2011-12-04 16 views
0

を返しますオブジェクトにローカル変数をリファクタリング:私はのように私は結果オブジェクトを持つ

public class ActionResult { 
    int ... 
    String ... 
    Boolean .. 
} 

そして、私の方法:今、私は私のActionResultオブジェクトでこれを置き換えたい

public ActionResult getAbc(..) { 

    String string1; 
    Boolean bool1; 
    int int1; 

    string1 = someDao.get(p1); 

    if(string1 != null) { 
     bool1 = someDao.getB(string1); 
    } 

} 

が、それが厄介に見えると私は値を変換する必要がありますが、値がnullであり、私のセット呼び出しが失敗して正しいことがありますか?

if(result.getString1() != null) { 
    result.setBool1(someDao.getB1(result.getString1())); 
} 

問題はあるが、getB1を呼び出した結果は、実際に私は、ブール値にキャストしなければならないこと、文字列を(サードパーティ製のlibには、私はそれを変更することはできません)を返します。

result.setBool1(Boolean.parseBoolean(someDao.getB1(result.getString1()))); 

また、getB1の呼び出しはnullを返す可能性があります。 ちょうどコードが非常に乱雑で読みにくいように見えますか?

答えて

1

二つの方法:trueまたはfalseのいずれかがあなたの問題領域に依存して

  1. がnull考えてみましょう。
  2. nullをnullのままにします。これは単純に未定義です。
+0

文字列の解析方法を教えてください。ここで1が真、0がnullです。 – Blankman

0

ライブラリが返されたときに何が起こるかを決める必要がありますnull文字列の場合は1つのパターンが真と比較されます。

"true".equalsCaseIgnore(valueWhichCouldBeNull) 

が等しい場合、値がnullの場合はfalseを返します。これが正しいかどうかを判断する必要があります。ヌルを治療するために、それは(?それはどのような例外をあるべきである)が真であるか、例外をスローする必要があり

関連する問題