这是我原来的课程。
public class HierarchyTreeNode {
private String label;
private List<HierarchyTreeNode> children;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<HierarchyTreeNode> getChildren() {
return children;
}
public void addChild(HierarchyTreeNode child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
}
}
我想在这里使用Lombok @getter和@setter。应该将“addChild”简化为setter方法,并将子进程的初始化放在构造函数中。我尝试了以下但我无法理解如何使其工作:
public class HierarchyTreeNode {
@Getter
private String label;
private List<HierarchyTreeNode> children;
public HierarchyTreeNode() {
this.label = label;
this.children = children;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<HierarchyTreeNode> getChildren() {
return children;
}
@Setter
public void addChild(HierarchyTreeNode child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
}
}
我的控制器具有以下功能:
if (!existingNodes.containsKey(childName)) {
// find node or create new node
HierarchyTreeNode node = existingNodes.get(parentName);
if (node == null) {
// new top level node
node = new HierarchyTreeNode();
node.setLabel(parentName);
root.addChild(node);
existingNodes.put(parentName, node);
}
// add child
HierarchyTreeNode child = new HierarchyTreeNode();
child.setLabel(childName);
node.addChild(child);
existingNodes.put(childName, child);
}
如何使用lombok简化addchild?
答案 0 :(得分:1)
简短回答,不,除了简单的获取和设置之外,Lombok无法创建添加方法或执行任何操作。
Lombok注释是类级别,因此正确使用如下所示我认为您正在尝试做什么。您需要在构造函数中初始化List。
如果您确实需要自定义设置器,那很好。任何实现都将覆盖lombok创建的方法。
以下是原始课程的简化版本。 标签将为null, children 列表将为空,不为空。
@Getter
@Setter
public class HierarchyTreeNode {
// Lombok will create a set of get/set methods for these...
private String label;
private List<HierarchyTreeNode> children;
public HierarchyTreeNode() {
this.children = new ArrayList<>();
}
// This isn't a setter. You are adding hence you need to implement.
public void addChild(HierarchyTreeNode child) {
this.children.add(child);
}
}