【问题标题】:Reload a class with different parameters重新加载具有不同参数的类
【发布时间】:2013-10-26 12:19:47
【问题描述】:

所以我有一个类似的代码:

A 类

B 类

methodB(frame initialization)

C 类

methodC(frame initialization)

ClassA 的对象调用ClassB,然后初始化一个框架。现在,当按下 ClassB 上的按钮时,会初始化 ClassC 的对象。

当按下 ClassC 上的按钮时,我需要使用更新的参数重新初始化 ClassA 的对象。因此,当从 ClassC 重新初始化 ClassA 的对象时,旧的 ClassC 对象仍然存在。

当按下特定按钮时,如何退出旧的 ClassA 对象并初始化 ClassA 的新对象? 我是能够创建 ClassA 的新实例,但问题在于从 ClassC 退出前一个对象,因为如果我在 classC 中添加 System.exit(0) ,它关闭了 ClassA 的两个对象。我只想关闭旧对象。

【问题讨论】:

  • 如果你使用单例,你只会有一个A的实例。所以,如果你初始化它两次,第一个实例将被第二个替换。
  • 使用类构造函数...
  • @AliBZ : Singleton 是一个不错的选择。
  • @StanislavMamontov:你能详细说明一下吗??
  • 你的问题没有任何意义,你应该先弄清楚什么是类,什么是对象,什么是方法。您不调用“类”,而是调用对象的方法(这是某个类的实例)。而且你不初始化一个类(但可能你实例化/初始化一个对象实例)。

标签: java swing exit systemexit


【解决方案1】:

编辑:你不能这样做。您无法重新初始化 this 或通过重构全局覆盖实例。

您需要保留对现有 A 类实例的引用。创建类 B 的实例时,使其在构造函​​数中接受类 A 并传递this。创建类 C 时也是如此。现在,如果您有适当的 getter,您可以在 C 中调用 this.getB().getA().performSomeUpdate() whre performSomeUpdate 通过设置字段将 A 实例更新为新参数。

【讨论】:

  • 我只是在做这件事。我面临的问题是在 B 中使用先前的参数初始化了一个 GUI。参数已更新,但仅在重新启动后才能使用。
  • 请记住,这还取决于 ClassA、ClassB 和 ClassC 的对象类型。如果它们是某种内部框架(例如),您可以隐藏它们并使其可见;每个动作都会产生一个 GUI 事件,当这些事件发生时,您的代码可以监听并执行操作。本质上,您可以通过侦听器“重新初始化”您的内部框架。当然,这只是一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多