Java访问方法中的字符串数组

Java访问方法中的字符串数组,java,scope,Java,Scope,我在方法a中有一个字符串数组(变量),它出现在类a中。现在我想访问它,并使用方法B中的另一个字符串数组设置它,该方法位于类B中B类属于A类 我是一名Java初学者,因此非常感谢您的帮助。非常感谢 public class A { B myclassb; void methodA() { String[] myvar; } } public class B { void methodB() { // how do I get to

我在
方法a
中有一个字符串数组(变量),它出现在
类a
中。现在我想访问它,并使用
方法B
中的另一个字符串数组设置它,该方法位于
类B
中<代码>B类属于
A类

我是一名Java初学者,因此非常感谢您的帮助。非常感谢

public class A {
    B myclassb;

    void methodA() {
        String[] myvar;
    }
}

public class B {
    void methodB() {
        // how do I get to A.methodA.myvar?
    }
}

您是否在寻找一些东西来显示Java是如何通过引用传递的,如下所示:

public class Test {


    public Test() {

    }

    public void methodA() {
        String [] arr = new String[3];
        arr[0] = "One";
        arr[1] = "Two";
        arr[2] = "Three";
        printArray(arr);

        methodB(arr);

        printArray(arr);
    }

    public void methodB(String [] arr) {
        arr[0] = "A";
        arr[1] = "B";
        arr[2] = "C";
    }

    public void printArray(String [] arr) {
        for (int i = 0; i < 3; i++) {
            System.out.println(arr[i]);
        }
    }

    public static void main(String [] args) {
        Test test = new Test();
        test.methodA();
    }
}
公共类测试{
公开考试(){
}
公开无效方法a(){
字符串[]arr=新字符串[3];
arr[0]=“一”;
arr[1]=“两个”;
arr[2]=“三”;
打印阵列(arr);
方法b(arr);
打印阵列(arr);
}
公共无效方法B(字符串[]arr){
arr[0]=“A”;
arr[1]=“B”;
arr[2]=“C”;
}
公共void打印数组(字符串[]arr){
对于(int i=0;i<3;i++){
系统输出打印项数(arr[i]);
}
}
公共静态void main(字符串[]args){
测试=新测试();
test.methodA();
}
}
这将输出: 一个 两个 三 A. B
C

你想要实现什么还不完全清楚,但我会尽力回答。 选项1:您说过要从嵌套类中的方法b在方法a中分配一个变量。这是不可能的,因为函数变量无法从另一个函数访问,并且在函数完成执行后不再存在。因此,您可以将其作为输入参数传输:

public class A {
    public void a(String[] input){
        String[] theArray = input;
    }

    private class B{
        private void b(){
            String[] input = new String[] {"an", "awesome", "Test"};
            a(input);
        }
    }
}
选项2:使用成员变量:

public class A {
    private String[] theArray;
    public void a(){
        this.theArray = new String[] {"a", "nice", "Test"};
        B bObject = new B();
        //modify value within b():
        bObject.b();

        //or assign it using a return value:
        this.theArray = bObject.b2();
    }

    private class B{
        private void b(){
            theArray = new String[] {"an", "awesome", "Test"};
        }

        private String[] b2(){
            return new String[] {"an", "awesome", "Test"};
        }
    }
}

如果类
B
中的方法/数组不是
静态的
,则必须创建类
B
的实例,然后从类
B
调用该方法,将类
A
中的数组作为参数传递…请使用代码改进您的描述