Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 - Fatal编程技术网

java中两个不同类之间的调用参数

java中两个不同类之间的调用参数,java,Java,我有两个类(在不同的文件中)和一个主类。我想在其他方法中使用它们的方法和参数(如int),但当我将它们创建为新的时,我遇到了“java.lang.StackOverflowerError”。 我的目的: Main>create class1>转到class1,将int发送到class2>做某事,并将结果作为int返回给class1,然后打印结果 public class Class1 { Class2 class2=new Class2(); protected int b=4

我有两个类(在不同的文件中)和一个主类。我想在其他方法中使用它们的方法和参数(如int),但当我将它们创建为新的时,我遇到了
“java.lang.StackOverflowerError”。

我的目的: Main>create class1>转到class1,将int发送到class2>做某事,并将结果作为int返回给
class1
,然后打印结果

public class Class1 {

    Class2 class2=new Class2();
    protected int b=4;
    public void start (int c)
    {
        class2.run(b);
        System.out.println("Numbber :"+c);
    }
}



public class Class2 {

    Class1 class1 = new Class1();
    protected int a=5;

    public void run(int b) {
        int c=b+10+a;
        class1.start(c);

    }
}


public class Main {

    public static void main(String[] args) {
        Class1 class1 = new Class1();
        class1.start(1);
        //enter code here

    }
}

在Class2的方法
run
和Class1的方法
start
之间有循环引用。

你的
run
方法调用
start
,调用
run
,调用
start
,调用

我的目的:Main>createclass1>gotoclass1并将int发送给class2>dosth并将结果作为int返回给class1,然后打印结果

public class Class1 {

    Class2 class2=new Class2();
    protected int b=4;
    public void start (int c)
    {
        class2.run(b);
        System.out.println("Numbber :"+c);
    }
}



public class Class2 {

    Class1 class1 = new Class1();
    protected int a=5;

    public void run(int b) {
        int c=b+10+a;
        class1.start(c);

    }
}


public class Main {

    public static void main(String[] args) {
        Class1 class1 = new Class1();
        class1.start(1);
        //enter code here

    }
}
如果这是您的目的,只需创建一个方法来执行您想要的操作,然后返回结果:

public int foo(int b) {
    return b+10+a;
}
这样,您的
start
方法将调用
foo()
并执行必要的计算,然后
返回结果,而不是再次调用该方法。但是Java是按值传递的,因此必须将
foo()
的结果解析为变量。但是,您只需打印结果即可:

public void start (int c)
{        
    System.out.println("Number :"+ class2.foo(b));
}

您在这里有循环引用,并调用
run
calls
start
及其周围。
run
calls
start
哪些调用
run
哪些调用
run
哪些调用
run
哪些调用
start
哪些调用
run
调用
start
哪个调用
run
哪个调用
start
哪个调用
run
哪个调用
run
哪个调用
start
哪个调用
run
哪个调用
run
哪个调用
start
哪个调用
run
哪个调用
run
哪个调用
start
哪个调用
调用
run
calls
start
哪个调用
run
哪个调用
run
哪个调用
start
哪个调用
run
哪个调用
run
哪个调用
run
哪个调用
run
哪个调用
run
哪个调用
start
run
调用
start
调用…@gblodget进行演示。