Java 相互声明两个类
我正在用NetBeans编写一个应用程序。我有两个类MyApp_View和MyApp_函数 MyApp_View类开始时是这样的Java 相互声明两个类,java,class,Java,Class,我正在用NetBeans编写一个应用程序。我有两个类MyApp_View和MyApp_函数 MyApp_View类开始时是这样的 public class MyApp_View extends FrameView { MyApp_Functions My_functions = new MyApp_Functions(); public MyApp_View(SingleFrameApplication app) { super(app); 在MyApp_函数中,我有 MyApp\u
public class MyApp_View extends FrameView {
MyApp_Functions My_functions = new MyApp_Functions();
public MyApp_View(SingleFrameApplication app) {
super(app);
在MyApp_函数中,我有MyApp\u View my\u View=新的MyApp\u视图(空)代码>
我想从MyApp_函数中访问MyApp_视图中的公共变量,并从视图中访问函数中的公共方法,但没有成功
这可行吗?怎么做
编辑:
从我得到的答案来看,我认为最好澄清一下
如果我在MyApp_函数中声明MyApp_视图,或者在MyApp_视图中声明MyApp_函数,它将按预期工作。但我无法从另一个类访问两个类中的公共内容。很明显,我只能从我声明的内容中访问内容
如果我尝试在MyApp_函数中声明MyApp_视图,并在MyApp_视图中声明MyApp_函数,那么它们编译得很好。但我在开始时得到一个空异常错误
再说一遍。更容易理解?这可行吗?怎么做 访问公共成员很容易——例如,只需使用My\u函数。foo
将访问对象MyApp\u函数
类的My\u函数
上的公共foo
变量,同样,使用My\u view.bar()
将调用该对象上的publicbar()
方法
不过,我怀疑你的问题是一个更一般的面向对象思维问题;我建议你读一本介绍Java的书,仔细阅读——OO程序员的思维方式,没有什么可以替代坚实的基础。访问公共成员很容易——例如,只需使用My_函数.foo
将访问对象MyApp_函数
类的My_函数
上的公共foo
变量,同样地,使用My_视图.bar()
将调用该对象上的公共bar()
方法
不过,我怀疑你的问题是一个更一般的面向对象思维问题;我建议你读一本介绍Java的书,仔细阅读——OO程序员的思维方式,没有什么可以替代坚实的基础。你需要将参考资料从一本传递到另一本。最基本的情况是,您希望将第二行更改为:
MyApp_Functions My_functions = new MyApp_Functions(this);
向MyApp_函数添加适当的构造函数,将引用“保存”到变量中,然后在需要从MyApp_视图访问某些内容时可以使用该变量
但最终,您需要询问这些关系是否真的必要,并可能重新设计系统以删除它们。您需要将引用从一个传递到另一个。最基本的情况是,您希望将第二行更改为:
MyApp_Functions My_functions = new MyApp_Functions(this);
向MyApp_函数添加适当的构造函数,将引用“保存”到变量中,然后在需要从MyApp_视图访问某些内容时可以使用该变量
但最终,您需要询问这种关系是否真的有必要,也许需要重新设计系统以删除它们
MyApp_视图my_视图=新建MyApp_视图(空)
这将创建一个新的MyApp\u视图
对象,该对象与构建MyApp\u函数的对象不同。听起来你想要的是让这两个对象互相引用。我通常在构造函数中为其中一个对象设置一个参数。下面是一个例子:
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
的对象可以通过A.B
访问关联对象B
,对象B
可以通过B.A
访问关联对象A
。在您的示例中,A
是MyApp\u视图
,B
是MyApp\u函数
MyApp_视图my_视图=新建MyApp_视图(空)
这将创建一个新的MyApp\u视图
对象,该对象与构建MyApp\u函数的对象不同。听起来你想要的是让这两个对象互相引用。我通常在构造函数中为其中一个对象设置一个参数。下面是一个例子:
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
的对象可以通过A.B
访问关联对象B
,对象B
可以通过B.A
访问关联对象A
。在你的例子中,A
是MyApp\u视图
,B
是MyApp\u函数
,个人推荐:凯西·塞拉和伯特·贝茨福的《头先Java》,我更愿意推荐一些SmallTalk或Ruby书籍:)个人推荐:凯西·塞拉和伯特·贝茨福的《头先Java》,我宁愿推荐一些SmallTalk或Ruby书籍:))