上课:

class Test {

  Object1 object1;
  Object2 object2;

  void setObject2 (Object2 newObject) {
    if (object1.someMethod()) {
      this.object2 = newObject;
    } else {
      someOtherMethod();
    }
  }
}


如何强制对象实例化必须在object1之前实例化object2

现在我可以考虑解决它

1.通过使用Object2作为参数构造函数并在那里实例化

Test(Object1 object1) {
  this.object1 = object1;
}


2.通过尝试设置object2的方法抛出异常

void setObject2 (Object newObject) {
  if (object1 == null) {
    throw new Exception();
  }
  ...


还有其他更合适的方法吗?

我需要它的原因是,我必须为区域Test创建新的广告活动object1,以便对该区域的某些站点object2进行广告宣传。在将网站添加到广告系列之前,我想检查该网站是否属于该地区。

最佳答案

一种更清洁的设计方式是使用Builder模式。这样,您只能以正确的方式设置和创建对象,而不是在运行时获取异常。

程序员无需阅读文档或错误消息即可了解自己需要做什么,因为API本身可以进行“指导”。

关于java - 如何强制Java对象按特定顺序实例化其实例变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40449666/

10-13 04:34