首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一类的其他对象中设置相同的类对象

如何在同一类的其他对象中设置相同的类对象
EN

Stack Overflow用户
提问于 2020-01-12 03:07:35
回答 3查看 203关注 0票数 0

我想优化这段代码,因为我可以有多个父母和孩子(自加入hibernate)。我想要一些父母来安置孩子。例如,事件是父事件,它可能具有像编辑、创建、更新、删除这样的第n个子类。虽然有些父母喜欢交易,但电影和餐厅可能有孩子,也可能没有孩子。有没有办法编写通用代码?

代码语言:javascript
复制
        Privilege parent = new Privilege("Event");
        Privilege parent1 = new Privilege("Deals");
        Privilege parent2 = new Privilege("Movies");
        Privilege parent3 = new Privilege("Restaurant");

        Privilege parent4 = new Privilege("Outdoor");

        Privilege child = new Privilege("Create");
        child.setParentId(parent);

        Privilege child1 = new Privilege("Edit");
        child1.setParentId(parent);

        Privilege child2 = new Privilege("Update");
        child2.setParentId(parent);
        Privilege child3 = new Privilege("Delete");
        child3.setParentId(parent);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-12 05:10:29

您可以创建这样的函数来设置权限。

代码语言:javascript
复制
private static List<Privilege> setPrivileges() {

        Privilege parent = setParentPrivilege("Event");
        Privilege parent1 = setParentPrivilege("Deals");
        Privilege parent2 = setParentPrivilege("Movies");
        Privilege parent3 = setParentPrivilege("Restaurant");
        Privilege parent4 = setParentPrivilege("Outdoor");

        Privilege child = setFirstLevel(parent, "Create");
        Privilege child1 = setFirstLevel(parent, "Edit");
        Privilege child2 = setFirstLevel(parent, "Update");
        Privilege child3 = setFirstLevel(parent, "Delete");
        Privilege subchild1 = setSecondLevel(child3,"Sub Delete");

        return Collections.unmodifiableList(
                Arrays.asList(
                        parent,
                        parent1,
                        parent2,
                        parent3,
                        parent4,
                        child,
                        child1,
                        child2,
                        child3,
                        subchild1
        ));
    }

    private static Privilege setParentPrivilege(String name) {
        return new Privilege(name);
    }

    private static Privilege setFirstLevel(Privilege firstLevel, String name) {
        Privilege firstLevelChild = setParentPrivilege(name);
        firstLevelChild.setParentId(firstLevel);
        return firstLevelChild;
    }

    private static Privilege setSecondLevel(Privilege secondLevel, String name) {
        Privilege secondLevelChild = new Privilege(name);
        secondLevelChild.setParentId(secondLevel);
        return secondLevelChild;
    }
票数 0
EN

Stack Overflow用户

发布于 2020-01-12 03:54:03

我尝试用@superBuilder和@builder来示例代码。

这将减少一些代码行。更多细节:https://www.baeldung.com/lombok-builder-inheritance

代码语言:javascript
复制
  @SuperBuilder
    public class Child extends Parent {
       private String a;
       private int b;
       private boolean c;
    }

    @SuperBuilder
    public class Parent {
        private double d;
        private float e;
        private String parentId;

    }

    Child instance = Child.builder().b(7).e(6.3).parentId(parentId).build();
票数 0
EN

Stack Overflow用户

发布于 2020-01-12 16:10:10

类特权{ String s;

代码语言:javascript
复制
public Privilege(String a) {
    this.s = a;
}

public void setParentId(Privilege aa) {
    System.out.println(aa);
}

public void setParents(Privilege... a) {
    for (Privilege aa : a) {
        this.setParentId(aa);
    }
}

}

公共类考试{

代码语言:javascript
复制
public static void main(String[] sre) {
    Privilege parent = new Privilege("Event");
    Privilege parent1 = new Privilege("Deals");
    Privilege parent2 = new Privilege("Movies");
    Privilege parent3 = new Privilege("Restaurant");

    Privilege child = new Privilege("Create");
    Privilege child1 = new Privilege("Edit");
    Privilege child2 = new Privilege("Update");
    Privilege child3 = new Privilege("Delete");
    parent.setParents(child,child1,child3,child2);
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59700602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档