有关ArrayList的条件赋值的范围问题

rai*_*att 2 java conditional arraylist variable-assignment

我试图在我的代码中处理许多不同的情况,这取决于从HTTPRequest对象中提取的属性.问题是,根据请求内容,不同的数据被拉出来填充ArrayList,但格式是相同的.

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

如果我在赋值之前没有初始化它,那么代码(在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);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我初始化它,它会抱怨重复的局部变量.如何根据不同的情况将其设置为不同的初始化/分配?

Mar*_*ers 5

不要在if块中再次声明ArrayList.

ArrayList<ArrayList<MyWeirdObject>> HM;
if ((request.getAttribute("timePeriod") == null) {
    HM = Test.getGlobalChallenge();
}
else {
    HM = Test.getGlobalChallengeByMonth(Test);
}
Run Code Online (Sandbox Code Playgroud)