当返回类型是动态的时,如何避免过多的if条件?
据我所知,如果条件和值是静态的,我们可以使用键和值创建一个hashmap,如果条件也要避免太多。
在下面的示例中,每个月的价格与客户的价格不同 客户...我需要添加12个相同的if语句...假设该字段是除了月份之外的东西......他们可能最终会超过100或200,如果是... ex:年... 1900年至2000年
Example,
public String getPrice(int Month) {
String price = "";
switch (month) {
case 1:
price = customerTable.getJanPrice();
break;
case 2:
price = customerTable.getFebPrice();
break;
...........
}
return price;
}
你能否帮我解答一下你的建议/意见?
谢谢, 卡锡尔
答案 0 :(得分:2)
使用您想要的价格创建一个枚举。
public enum Month
{
SEPTEMBER (3.33),
OCTOBER (4.85),
NOVEMBER (5.98),
etc ;
public final double Price;
Month(double monthPrice)
{
this.Price = monthPrice;
}
}
然后访问该价格:
Month.SEPTEMBER.Price
修改强> 因为数据在运行时被更改,并且使用类是“无限”的可能性,这将是一个更易于管理的选项。
public class Year
{
public final List<Month> Months;
public Year(List<Month> months)
{
Months = months;
}
}
public class Month
{
public final double Price;
public Month(double price)
{
Price = price;
}
}
答案 1 :(得分:0)
如果(假设在这里)每个客户返回的'dataobject'是某种hashmap(kv-store),该怎么办?
然后使用一些约定,您可以使用<day,month,year>
- combi来构建一个密钥,用于在返回的数据对象中查找该特定组合的价格。