2

HTTPRequest オブジェクトから引き出された属性に依存するコードで、さまざまなケースに対処しようとしています。問題は、リクエストのものに応じて異なるデータが引き出されて ArrayList を満たすことですが、形式は同じです。

if (request.getAttribute("timePeriod").equals(null)) {
    ArrayList<ArrayList<MyWeirdObject>> HM = Test.getGlobalChallenge();
}
else {
    ArrayList<ArrayList<MyWeirdObject>> HM = Test.getGlobalChallengeByMonth(Test);
}

割り当ての前に初期化しないと、(JSP 内の) コードは、もちろん、HM オブジェクトを解決できないことを示します。

ArrayList<ArrayList<MyWeirdObject>> HM = new ArrayList<ArrayList<MyWeirdObject>>();
if (request.getAttribute("timePeriod").equals(null)) {
    ArrayList<ArrayList<MyWeirdObject>> HM = Test.getGlobalChallenge();
}
else {
    ArrayList<ArrayList<MyWeirdObject>> HM = Test.getGlobalChallengeByMonth(Test);
}

しかし、初期化すると、ローカル変数の重複について不平を言います。さまざまな状況に基づいて異なる方法で初期化/割り当てを行うように設定するにはどうすればよいですか?

4

5 に答える 5

5

if ブロック内で ArrayList を再度宣言しないでください。

ArrayList<ArrayList<MyWeirdObject>> HM;
if ((request.getAttribute("timePeriod") == null) {
    HM = Test.getGlobalChallenge();
}
else {
    HM = Test.getGlobalChallengeByMonth(Test);
}
于 2012-12-24T20:43:44.187 に答える
2

これを試して:

ArrayList<ArrayList<MyWeirdObject>> HM;
if ((request.getAttribute("timePeriod") == null) {
    HM = Test.getGlobalChallenge();
}
else {
    HM = Test.getGlobalChallengeByMonth(Test);
}
于 2012-12-24T20:44:05.630 に答える
1

変数を再宣言することはできません。下記参照

ArrayList<ArrayList<MyWeirdObject>> HM = new ArrayList<ArrayList<MyWeirdObject>>();
if ((request.getAttribute("timePeriod") == null) {
    HM = Test.getGlobalChallenge();
}
else {
    HM = Test.getGlobalChallengeByMonth(Test);
}
于 2012-12-24T20:43:58.663 に答える
1

if/else の外で宣言HMして初期化し、null以下のように if/else 内で使用します。

ArrayList<ArrayList<MyWeirdObject>> HM=null;
    if ((request.getAttribute("timePeriod") == null) {
       HM = Test.getGlobalChallenge();
    }
    else {
     HM = Test.getGlobalChallengeByMonth(Test);
    }
于 2012-12-24T20:44:18.913 に答える