java两个类相互调用的问题

有两个类A.java和B.java.
其中A中要调用B中的方法,B要调用A中的方法。
如果初始化的时候相互初始化的话,那么将会陷入循环初始化。
如何解决该问题?
举例:java swing小程序:
要实现界面与监听器相分离。界面类SimpleFrame.java中有一个Button “清除”,点击之后清空JTextField中的内容。
具体代码如下:
SimpleFrame.java

监听类CleanUp.java

可以这样,在A,B类中分别设一个静态变量 可以是 boolean行的,
当A调用b 的时候 把B类得这个变量改了,然后再B的方法中,依照这个变量来决定是否还调用A的方法

同理可以在B调用A的时候 修改A的变量,A会依照这个变量来决定是否还调用B
这样达到,A调完B 就不会有B 再去A ,B 调完A 之后A不会再去掉B
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-28
用一个类的方法调用不一定要初始化一个类呀
比如
A a = new A(); 这样我有了这个对象的引用之后
a.clear();
a.clear();
a.claer();
他都是只会调用一次构造啊
还有你为什么在本类的初始化工作中,去初始化其他的类呢?
还有就是JtextFiled 中的内容,只要你有那个JtextFIeld对象你就可以清除里面的内容呀追问

可能是我的描述有问题,我的意思是实例化。比如A类中要用B中的方法,那么要在A中实例化B吧,即在A中要有:B b=new B();然后才能用b.method()。
另外,你说有JTextField对象就可以清楚里面的内容是什么意思?要做点击按钮清除输入框中的内容,那么要在监听器类里面处理吧。如果是分开的两个类的话,你如何让监听器获取JTextField对象呢?是不是需要在监听器类中保存一个窗体类呢?

追答

我现在有点事不能给你看代码,不过我可以告诉你你可以通过传对象的方式,或者就是内部累的方式都是可以实现的。

第2个回答  推荐于2016-10-30
很简单,界面是A类,监听器是B类,只需要在初始化界面A类的时候,给button绑定鉴定器为B类就行,这行代码可以直接在A类的构造方法里写,也可以专门写一个初始化方法,然后在构造方法里调用。追问

那么如何让JTextField内容清空呢?

追答

有两种选择,一种是你在A类中,给button绑定监听器的时候,把JTextField对象传过去,例如,button.addActionListener(new B(JTextField对象的引用));这样,你在B类中,可以访问到JTextField这个对象。或者你也可以把整个A类的对象传过去,这样什么都可以获得了

追问

这个可以用,又学到一招。谢谢啦。

本回答被提问者采纳

java两个类相互调用的问题
可以这样,在A,B类中分别设一个静态变量 可以是 boolean行的,当A调用b 的时候 把B类得这个变量改了,然后再B的方法中,依照这个变量来决定是否还调用A的方法 同理可以在B调用A的时候 修改A的变量,A会依照这个变量来决定是否还调用B 这样达到,A调完B 就不会有B 再去A ,B 调完A 之后A...

java在同一个类里的两个方法可以互相调用么?
当然可以 举个简单的小例子 public class Person { void zou(){ System.out.println("走");} void tiao(){ this.zou(); \/\/调用本类的方法 } }

java 类与类之间的调用
1、定义2个类 public class A{ \/\/定义类A public void s1(){\/\/定义类A的方法s1 } public void s2(){\/\/定义类B的方法s2 }}public class B{ public void t1(){\/\/定义类B的方法t1 } public void t2(){\/\/定义类B的方法t2 }}2、类A和类B相互调用 类A调用...

Java 两个项目之间要相互调用,大家都进来看看啊!!!
直接可以使用http啊,在Action中使用httpclient调用另外一个系统提供的URL,如果你想得到返回数据的话,就在自己在封装一次,将输出放在respone中 或则输出一个XML包都是可以的。

java 中,同一个包内的类如何相互调用?
只要定义为public 那么可以直接调用 比如我有类A1、A2 A1中有方法 public void getAge(){} public void getName(){} 在类A2中调用A1中的方法 那么就是要在A2中写 A1 a1 = new A1();a1.getAge();a1.getName();以上两句就可以调用类A1中的方法 ...

JAVA中一个包里面不同的类怎么相互调用方法
一个类中 new 另一个类 创建对象 根据对象调用方法 例如:public class A{ ...public void say(){ ...} } public class B{ ...public void say(){ ...} } public class C{ public static void main(String[] args){ A a=new A;B b=new B;a.say();b.say();} } ...

JAVA中一个包里面不同的类怎么相互调用方法
java中类调用的方法只有俩种。实例化对象,用该对象调用该类中的方法。直接用类名.方法进行调用。 (被static修饰过的静态方法)

在Java中如果A类调用了B类,编译A类时必须要B类,但是B类也调用了A类,编 ...
直接编译就行了啊。剩下的事情交给jdk帮你处理了。只需要关心你的逻辑是不是正确的。

JAVA我写的一个程序里要加两个类可是下面的一个类运行不出来_百度知 ...
类是互相独立存在的,你一个文档写了两个类,但是你要明白他们是相互独立的!如果你想用另外一个类就需要关联起来,调用他,这个基础很重要,你要努力多看看了!我帮你修改了一下,注释了一下!import java.util.Scanner;public class Circle{public static void main(String[] args){Scanner scn = new ...

javaA类的数据怎么给B类使用?
首先将A类中允许其他类访问的成员定义成Public,或者定义一个公用属性,指向这个私有变量 然后在B中定义一个A类型的成员,讲A实例化后,就可以调用A中刚才定义的公共成员,包含属性,方法,公共变量等

相似回答