【问题标题】:Access non-static outer context from within inner record从内部记录中访问非静态外部上下文
【发布时间】:2021-11-21 12:47:08
【问题描述】:

免责声明我已经有一段时间没有在这里提出问题了,所以请对我温柔:)​​

我正在尝试从我的业务对象中生成一个状态,理想情况下它应该保持封装状态。我的想法是定义一个具有内部表示的类,并有办法返回一个状态对象,该对象稍后将映射到不同的视图表示。所以我想象了这样的事情:

State state = order.State();

Order 和 State 的定义如下:

public class Order {
    private String identifier;

    record State(String number) {
        public State() {
            this(identifier);
        }
    }
}

所以我的问题是如何定义我的内部记录和外部类之间的关系,以便我可以访问实例属性(最好使用默认记录构造函数)并将它们映射到不可变结构而不遇到静态、非静态上下文问题?

(我忽略了在外部类上创建附加方法的可能性,例如:toState()

【问题讨论】:

  • 你不知道:嵌套记录类是隐式静态的。让State 有一个Order 成员并通过它访问它的属性。
  • @SotiriosDelimanolis 谢谢你,我想知道为什么我遇到了麻烦,但显然有对这个问题的解释:“如果记录类本身是嵌套的,那么它是隐式静态的;这避免了一个立即封闭的实例,它将默默地向记录类添加状态。” link您介意根据您的评论创建一个答案吗,因为它实际上回答了我的问题?

标签: java oop domain-driven-design


【解决方案1】:

将方法从记录上移到类中。

public class Order {
    private String identifier;

    public State state() {
        return new State(identifier);
    }

    record State(String number){}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多