我在理解私有变量和公共变量的工作方式时遇到了问题。
我正在尝试从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);
}
}
我需要做些什么来设置变量以及为什么我错了?
答案 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
),或者您需要指定将该字符串分配给的索引。请注意,在后一种情况下,您需要首先初始化数组。