【发布时间】:2018-01-21 11:49:30
【问题描述】:
我有一个概念性问题。(一些问题!)
让我们用一个真实的项目来解释它。
我有一个Loginswing 表单,它有 main 方法,应用程序从这里开始。
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Login().setVisible(true);
}
}); // this method is inside main Method
Login 表单包含一些TextFields 和Buttons,还有一些methods。
(例如,当我按下 Enter 按钮时,会执行一些身份验证和操作)
按下 Enter 按钮后,如果验证成功,它将转到另一个名为 MainTabbedForm 的表单。
现在的问题是关于Object Oriented Programming 和类加载。
我想从MainTabbedForm 访问Login 表单。例如,我想disposeLogin 表单在身份验证成功后,并想在MainTabbedForm 构造函数中进行。我在Login 类中编写了一个方法来将登录连接到MainTabbedForm。这样:
public void disappearForm(MainTabbedForm form) {
this.form=form; // I already has defined a MainTabbedForm field in top of the Login class
this.dispose(); // Dispose the Login class
}
并在MainTabbedForm的构造函数中使用,使用前只需在MainTabbedForm中声明一个Login Form作为字段即可;
public MainTabbedForm(Login login) {
this.login=login;
login.disappearForm(this)
}
但它给了我 NullPointException 因为登录尚未初始化。
如果我创建一个新的登录类,当然它是一个新类,不会做我想要的事情,因为它是一个新实例,而不是第一个在 main 方法中创建的 Login。
现在我有一个问题,如何将这两个类相互连接?
当然,我可以制作一个静态方法来完成我的工作!但我不想这样做。
我认为由于此类加载和编程框架和设计模式的艺术,如OSGi 和MVC 和其他人已经创建,以更动态地管理加载和访问服务和对象以及其他事物,对吗?
现在对这些答案的回复非常感谢!
【问题讨论】:
-
为什么要从
MainTabbedForm拨打dispose()?你是如何创建MainTabbedForm的?为什么它还将对自身的引用传递给disappearForm()方法?
标签: java oop classloader