Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java链类_Java_Methods - Fatal编程技术网

Java链类

Java链类,java,methods,Java,Methods,我构建了一个运行5个类的主类,并使它们能够相互传递字符串。我只发布了主类+1类和4类 主要类别: public class main { public static void main(String[] args){ class4 c4 = new class4(c1); class3 c3 = new class3(c4); class2 c2 = new class2(c3); c2.setDefaultCloseOperation(JFrame.EXI

我构建了一个运行5个类的主类,并使它们能够相互传递字符串。我只发布了主类+1类和4类

主要类别:

public class main {
public static void main(String[] args){

    class4 c4 = new class4(c1);

    class3 c3 = new class3(c4);

    class2 c2 = new class2(c3);
    c2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c2.setSize(200,100);
    c2.setLocationRelativeTo(null);
    c2.setVisible(true);

    class1 c1 = new class1(c2);
    c1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c1.setSize(200,100);
    c1.setLocationRelativeTo(null);
    c1.setVisible(true);


}
}

第1类:

public class class1 extends JFrame{
private JButton jb;

private class2 c2;
public class1(class2 c2){
    this();
    this.c2 = c2;
    }


public class1(){
    super("");
    setLayout(new FlowLayout());

    jb = new JButton("click click");
    add(jb);

    jb.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    sayHi("Hi buddy");
                }});
}
public void sayHi(String x){
    c2.recieveHi(x);
}

public void recieveHi(String x){
    System.out.println(x);
}

}
第5类:

public class class4 {

private class1 c1;
public class4(class1 c1){
    //this();
    this.c1 = c1;
}
public void recieveHi(String x){
    System.out.println(x);
    killMessenger();
}
public void killMessenger(){
    String s = "back to class 1";
    c1.recieveHi(s);
}

}
类1将字符串传递给类2,类2将字符串传递给类3等。。当class4收到字符串时,我需要将字符串传递给class1。。正如你在我的课堂上看到的,我需要把它们绑起来

class 1 c1 = new class1(c2);

class4c4=新的class4(c1)
做这件事是行不通的,因为class1还没有制作出来。总是会有一个失败的结局,所以可能会有一个方法来修复它。

您可以有一个
setter
方法,这样您就不会在构造函数中传递
c1
,而是在创建
class1
实例之后。在你的
class4
课程中

public void setClass1Object(class1 pC1) {
    this.c1 = pC1;
}

谢谢,但没用。。我想这是因为我没有正确导入方法,你能帮我吗??错误为NullPointerException是否有错误?或者它就是不能像预期的那样工作。请提供更多信息。错误是:线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常我认为您必须在
killMessenger()
方法中检查
if(c1!=null){…}
。建议您为类和Java命名约定提供更多描述性名称。这也不起作用。只是破坏了代码,没有将值传递给class1。。制作了一个新的线程,并附加了所有的类