帮助我理解变量在Java中的工作原理

时间:2011-05-29 20:02:21

标签: java scope

我在理解私有变量和公共变量的工作方式时遇到了问题。 我正在尝试从myThread填充myStorage.outString变量。 但似乎我无法从myThread中看到setInString方法。 这是我的例子:

public class CT63_Console extends MIDlet {
    public Storage myStorage;
    public void startApp() {
        this.myStorage = new Storage();
    }
}

public class storage{
    private String[] outString;

    public Storage(){
        AClass myThread = new AClass();
        myThread.start();
    }
    public void setInString(String sendString){
        this.outString = sendString; //push seems not to be supported by MIDP
    }
}

public class AClass{
    public void run(){
        myFunction("write this into Storage var outString");
    }

    private myFunction(myString){
        myStorage.setInString(myString);
    }
}

我需要做些什么来设置变量以及为什么我错了?

2 个答案:

答案 0 :(得分:1)

您试图访问myStorage而没有引用它。 您可以在创建AClass实例时传递此引用。

此外,您正在尝试将字符串分配给无法完成的字符串数组。

public class Storage{
    private String outString;

    public Storage(){
        AClass myThread = new AClass(this);
        myThread.start();
    }
    public void setInString(String sendString){
        this.outString = sendString; //push seems not to be supported by MIDP
    }
}

public class AClass {
    Storage myStorage;

    public AClass(Storage s) {
        this.myStorage = s;
    }

    public void run(){
        myFunction("write this into Storage var outString");
    }

    private myFunction(String myString) {
        myStorage.setInString(myString);
    }
}

答案 1 :(得分:0)

this.outString = sendString;

outString是一个字符串数组(String[])。您不能将单个字符串分配给字符串数组。因此,您需要将该变量的类型更改为单个字符串(仅String),或者您需要指定将该字符串分配给的索引。请注意,在后一种情况下,您需要首先初始化数组。