Помогите мне понять, как переменные работают в Java - PullRequest
1 голос
/ 30 мая 2011

У меня проблемы с пониманием того, как работают частные и публичные переменные. Я пытаюсь заполнить переменную myStorage.outString из myThread. Но, похоже, я не вижу метод setInString из myThread. Вот мой пример:

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 ]

1 голос
/ 30 мая 2011

Вы пытаетесь получить доступ к 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);
    }
}
0 голосов
/ 30 мая 2011
this.outString = sendString;

outString - это массив строк (String[]). Вы не можете назначить одну строку массиву строк. Поэтому вам нужно либо изменить тип этой переменной на одну строку (просто String), либо указать индекс, которому вы назначаете эту строку. Обратите внимание, что в последнем случае вам необходимо сначала инициализировать массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...