| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Проблема области видимости |
| Автор: bulat01 21.10.2011, 16:17 | ||
| здравствуйте все, помогите разобраться, вот фрагмент кода
внутри метода passVariablesValidStat - значения .trueCount1 и falseCount1 видны. а внутри метода nextToDataProcessing - значения .trueCount1 и falseCount1 показывают null. Не понимаю почему. Подскажите как решить эту проблему. |
| Автор: Pawl 21.10.2011, 16:30 |
| может, они и в методе passVariablesValidStat не видны. Попробуй написать в этом методе System.out.println(this.trueCount1); System.out.println(this.falseCount1); |
| Автор: bulat01 21.10.2011, 16:45 |
| нет - они в методе passVariablesValidStat видны. |
| Автор: LSD 21.10.2011, 16:59 |
| Данных явно недостаточно. Что делает proc.getDataCollection2(this);? В какой момент вызываются оба этих метода? |
| Автор: bulat01 21.10.2011, 17:49 |
| метод nextToDataProcessing (в классе DataCollection2 ) вызывается при нажатии кнопки Next. этот метод передает определенные параметры (включая параметры из метода passVariablesValidStat ) следующей форме-классу DataProcessing . метод nextToDataProcessing также запускает метод readValidStatus находящийся в классе DataValidation (этот метод вычисляет количество ячеек с TRUE или FALSE - чтение из csv файла а затем передает значения обратно через метод passVariablesValidStat в класс DataCollection2) Если я где то ошибся - пож-та укажите. Просто недостаточно знаний и опыта в программировании java. |
| Автор: Pawl 21.10.2011, 19:37 |
| Согласен с LSD. Ты передаешь куда-то объект класса DataCollection2 методом proc.getDataCollection2(this); в этом где-то может что-то делаться с объектными переменными (в д. с. trueCount1 и falseCount1)... короче, |
| Автор: math64 21.10.2011, 22:40 | ||
| Скорее всего, не учитывется, что в Java параметры, в том числе String, передаются по значению. Непонятно, зачем счётчики хранить в виде String - это не позволит изменить значения полей. Чтобы можно было изменять значения счётчиков можно, например определить интерфейс:
|
| Автор: dobrolub 21.10.2011, 22:50 |
| String – по ссылке. Но он final. |
| Автор: math64 21.10.2011, 23:31 |
Нет, всё - по значению. Но для классов передаётся по значению указатель. Через него можно изменить объект, на который он указаывает, но не сам указатель - после присвоению параметру нового значения он становится обычной локальной переменной. Кроме String нельзя изменить также объекты типа Boolean, Integer, Double и т.д. |
| Автор: dobrolub 22.10.2011, 00:02 |
| Object references are passed by value. |
| Автор: ИванИванович 25.10.2011, 06:18 | ||||||
Нельзя - это пожалуй слишком сильное слово т.к. если очень хочется изменить, то можно. Но переопределить нельзя. A значит, если proc.getParameters это функция которая пытается инициализиривать trueCount1 и falseCount1, то у нее ничего не получится
Забавно, то что Java называет references , на самом деле pointers В http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.3.1 они так и пишут: The reference values (often just references) are pointers to these objects. Т.е.
абсолютно верно |