采取以下 POJO:
public class Widget {
private String fizz;
private Long buzz;
private List<Fidget> collaborators;
// Constructor, getters & setters
}
public class Fidget {
private String fizz;
private String foo;
// Constructor, getters & setters
}
以及以下(工作)方法:
public void compriseWidgets(List<Fidget> fidgetList) {
List<Widget> widgets = new ArrayList<Widget>();
Widget currentWidget = null;
for (Fidget fidget : fidgetList) {
if (currentWidget == null ||
!currentWidget.getFizz().equals(fidget.getFizz())) {
currentWidget = new Widget();
widgets.add(currentWidget);
currentWidget.setFizz(fidget.getFizz());
currentWidget.setBuzz(fidget.getFoo().length());
}
currentWidget.getCollaborators().add(fidget);
}
return widgets;
}
在这里,我们只想返回一个List<Widget>
并填充该列表:
从Fidget
输入列表中的第一个开始(因此currentWidget == null
);和
如果Fidget
和currentWidget
具有相同的fizz
值
collaborators
此外,currentWidget
无论 fizzes 是否匹配,我们都希望继续追加。
一个新的代码风格准则要求我们声明所有变量final
...意味着我需要将上面的代码重构为如下所示:
public void compriseWidgets(final List<Fidget> fidgetList) {
final List<Widget> widgets = new ArrayList<Widget>();
final Widget currentWidget = null;
for (final Fidget fidget : fidgetList) {
...
}
return widgets;
}
因为它既需要在循环Widget 内创建一个新的,又需要一个外部(循环外)对Widget我们可以添加的 a 的引用collaborators,所以我完全不知道如何用final. 有任何想法吗?另外,请注意,这不是我可以“推后”的,我只需要弄清楚它并让它与新的编码标准一起使用。
慕码人2483693
白衣染霜花
相关分类