如何优化拥有大量 switch case 的情况?还有其他方法可以完成我想做的事情吗?
我有一个时间 slider ,该 slider 使用当前 slider 所在位置的值 (1-24) 更新变量 currentTime
并调用 updateTime()
方法。在此方法中,我有 1 - 24 个开关案例(本例中只有 3 个)。我可以用更简单的方式来完成此操作,而不是制作 24 个开关盒吗?
private void updateTime() {
switch (currentTime) {
case 1:
hourlyData = weatherAPI.HourlyReport(1);
setHourlyData();
break;
case 2:
hourlyData = weatherAPI.HourlyReport(2);
setHourlyData();
break;
...
case 24:
hourlyData = weatherAPI.HourlyReport(24);
setHourlyData();
break;
default:
System.out.println("Oops");
break;
}
}
--
public Map HourlyReport(int hour) {
Hourly hourly = new Hourly(fio);
//In case there is no hourly data available
if (hourly.hours() < 0) {
System.out.println("No hourly data.");
} else {
hourlyData.put("Temp", hourly.getHour(hour).temperature()); // Temperature
hourlyData.put("TempFeel", hourly.getHour(hour).apparentTemperature()); // Feel Temperature
hourlyData.put("Humidity", hourly.getHour(hour).humidity()); // Humidity
hourlyData.put("WindSpeed", hourly.getHour(hour).windSpeed()); // Wind Speed
hourlyData.put("Precip", hourly.getHour(hour).precipProbability()); // Precipitation
hourlyData.put("TimeStamp", hourly.getHour(hour).time());// TimeStamp
}
return hourlyData;
}
最佳答案
在这种情况下使用开关是不合理的。使用简单的 if
if (currentTime > 0 && currentTime < 25) {
hourlyData = weatherAPI.HourlyReport(currentTime);
setHourlyData();
} else {
System.out.println("Oops");
}
关于java - 大量switch case如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819508/