我正在NetBeans中编写应用程序。我有两个类MyApp_View和MyApp_Functions。
MyApp_View类就像这样开始
public class MyApp_View extends FrameView {
MyApp_Functions My_functions = new MyApp_Functions();
public MyApp_View(SingleFrameApplication app) {
super(app);
在MyApp_Functions中我有
MyApp_View my_view = new MyApp_View(null);
我想从MyApp_Functions访问MyApp_View中的公共变量,从视图中访问函数中的公共方法,但是没有成功。
这可行吗?怎么样?
编辑: 从我得到的答案来看,我认为最好澄清一下。
如果我在MyApp_View中的MyApp_Functions 或 MyApp_Functions中声明MyApp_View,它会按预期工作。但我不能从另一个类中访问这两个类中的公共内容。我显然只能从我声明的那个中获取内容。
如果我尝试在MyApp_Functions中声明MyApp_View并在MyApp_View中声明MyApp_Functions,那么它们编译正常。但是我在启动时遇到了一个null异常错误。
再次。更容易理解?这可行吗?如何?
答案 0 :(得分:2)
您需要将引用从一个引用到另一个。在最基本的情况下,它会将你的第二行更改为:
MyApp_Functions My_functions = new MyApp_Functions(this);
并将相应的构造函数添加到MyApp_functions中,以便在变量中“保存”引用,然后可以在需要从MyApp_View访问某些内容时使用该变量。
但最终,您想要询问这种关系是否真的有必要,并且可能会重新设计系统以将其删除。
答案 1 :(得分:1)
MyApp_View my_view = new MyApp_View(null);
这将创建一个新的MyApp_View
对象,该对象与构造MyApp_Function
的对象不同。听起来你想要的是让两个对象相互引用。我通常在其中一个对象的构造函数中使用参数进行设置。这是一个例子:
class A {
private B b;
public A() {
this.b = new B(this);
}
}
class B {
private A a;
public B(A a) {
this.a = a;
}
}
现在,A
类型的对象可以通过B
访问关联的对象A.b
,对象B
可以通过{{访问关联的对象A
1}}。在您的示例中,B.a
为A
,MyApp_View
为B
。
答案 2 :(得分:0)
访问公共成员非常简单 - 例如,只需使用My_functions.foo
即可访问foo
类对象My_functions
上的公开MyApp_Functions
变量,同样如此使用my_view.bar()
将在该对象上调用公共bar()
方法。