我正在尝试使代码更“干净”。我有许多带有很多if语句的函数。我该如何更换它们?
我正在使用4种不同的哈希表,这就是为什么要使用这些ifs的原因。唯一改变的是哈希表名称和在其中添加信息的jList。
if(n.getCategorie().getNum() == Categorie.INTERNATIONAL.getNum())
{
DefaultListModel dlm = (DefaultListModel) jListInternationales.getModel();
dlm.addElement(n.getTitre());
jListInternationales.setModel(dlm);
NewsInter.put(""+nNews, n);
}
else if(n.getCategorie().getNum() == Categorie.POLITIQUE.getNum())
{
DefaultListModel dlm = (DefaultListModel) jListViePolitique.getModel();
dlm.addElement(n.getTitre());
jListViePolitique.setModel(dlm);
NewsPolitique.put(""+nNews, n);
}
else if(n.getCategorie().getNum() == Categorie.RAGOT.getNum())
{
DefaultListModel dlm = (DefaultListModel) jListRagotsEtPotins.getModel();
dlm.addElement(n.getTitre());
jListRagotsEtPotins.setModel(dlm);
NewsRagot.put(""+nNews, n);
}
else if(n.getCategorie().getNum() == Categorie.SPORT.getNum())
{
DefaultListModel dlm = (DefaultListModel) jListInfosSports.getModel();
dlm.addElement(n.getTitre());
jListInfosSports.setModel(dlm);
NewsSport.put(""+nNews, n);
}
答案 0 :(得分:3)
似乎您正在使用枚举。枚举可以通过实例进行比较。不需要检查号码。
可以在开关盒中使用。例如
switch (n.getCategorie()) {
case Categorie.INTERNATIONAL:
...
这消除了一些混乱,但基本上消除了“ if”语句的数量。
答案 1 :(得分:3)
if
分支之间的唯一区别来自JList
引用。由于代码是重复的,因此您应该将其提取到单独的方法中:
private void updateList(JList list) {
DefaultListModel dlm = (DefaultListModel) list.getModel();
dlm.addElement(n.getTitre());
list.setModel(dlm);
}
此后,代码变得更加简洁:
if (n.getCategorie().getNum() == Categorie.INTERNATIONAL.getNum()) {
updateList(jListInternationales);
} else if (n.getCategorie().getNum() == Categorie.POLITIQUE.getNum()) {
updateList(jListViePolitique);
} // etc
NewsInter.put(""+nNews, n);
答案 2 :(得分:0)
您可以通过将其更改为switch()结构来替换if,else if,else if ...结构,如下所示:
switch(n.getCategorie().getNum()){
case Categorie.INTERNATIONAL.getNum():
DefaultListModel dlm = (DefaultListModel) jListInternationales.getModel();
dlm.addElement(n.getTitre());
jListInternationales.setModel(dlm);
NewsInter.put(""+nNews, n);
break;
case Categorie.POLITIQUE.getNum():
...etc
}
答案 3 :(得分:0)
根据您的情况,您可以用Switch
语句替换它。
这是结构:
switch(value) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
在您的特定问题中,这将是:
switch(n.getCategorie()) {
case International:
// your code
break;
case Politique:
// code block
break;
...
default:
// code block
}
答案 4 :(得分:0)
使用Switch Case命令在处理时占用更少的内存