Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ArrayList, Запись объектов 
V
    Опции темы
rith2
Дата 12.5.2011, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Привет!

Краткое описание

Класс DBFClassWorker (Объект - сотрудник)
Код


public class DBFClassWorker extends Object {

    private Integer WorkerId;//таб номер согласоно стоблцу в дбф
    private String WorkerName;//фио
    private String WorkerHolidayStart; 
    private String WorkerHolidayEnd;
    private String WorkerDischarge;
    private String WorkerKomandStart;
    private String WorkerKomandEnd;

//Соответственно для этих полей есть геттеры и сеттеры


Запись объектов в ArrayList

Код

public List<DBFClassWorker> GetInfo() {

        List<DBFClassWorker> Workers = new ArrayList() ; //список сотрудников
 
        DBFClassWorker Worker = new DBFClassWorker(); //конкретный сотрудник

        String  queryUvolnen = "SELECT code, fio, dateuv "
                                           + "FROM sspec";
        try {
            rs = stmt.executeQuery(queryUvolnen);
            while (rs.next()) {                                                   //запись результатов
                Worker.setWorkerDischarge(rs.getString(3));
                Worker.setWorkerName(rs.getString(2));
                Worker.setWorkerId(rs.getInt(1));
                Worker.setWorkerHolidayEnd(null);
                Worker.setWorkerHolidayEnd(null);
                Worker.setWorkerKomandStart(null);
                Worker.setWorkerKomandEnd(null);
                Workers.add(Worker);              
            }

            for (int i=0; i<Workers.size(); i++) {                 //тестовый вывод
                log.info(Workers.get(i).getWorkerName());
            }


Проблема - при тестовом выводе оказывается, что все элементы списка содержат одну и ту же запись, то есть данные по одному сотруднику (причем по сотруднику который находится в самом конце списка результата ResultSet). 

Если отдельно вывести результат ResultSet, то видно, что все возвращается верно. 

Вроде как старательно изучил FAQ с подобным примером, но не помогает  smile 

Критика приветствуется, сарказм приветствуется. В чем я затупил понять не могу, подскажите

PM MAIL   Вверх
Sibit
Дата 12.5.2011, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.10.2009
Где: NSK

Репутация: нет
Всего: 1



Я думаю, проблема в том, что создается всего один экземпляр класса Worker и при каждом считывании ему присваиваются новые значения. В итоге получается массив ссылок на один объект.

Код

        DBFClassWorker Worker;
        String  queryUvolnen = "SELECT code, fio, dateuv "
                                           + "FROM sspec";
        try {
            rs = stmt.executeQuery(queryUvolnen);
            while (rs.next()) {                                                   
                Worker = new DBFClassWorker();
                Worker.setWorkerDischarge(rs.getString(3));
                Worker.setWorkerName(rs.getString(2));
                Worker.setWorkerId(rs.getInt(1));
                Worker.setWorkerHolidayEnd(null);
                Worker.setWorkerHolidayEnd(null);
                Worker.setWorkerKomandStart(null);
                Worker.setWorkerKomandEnd(null);
                Workers.add(Worker);              
            }



Это сообщение отредактировал(а) Sibit - 12.5.2011, 04:51
PM MAIL   Вверх
rith2
Дата 12.5.2011, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Цитата(Sibit @ 12.5.2011,  04:51)
Я думаю, проблема в том, что создается всего один экземпляр класса Worker и при каждом считывании ему присваиваются новые значения. В итоге получается массив ссылок на один объект.


Прочитал, проверил, помогло. Появилось ощущение, что на голове выросли рога.. бараньи )))) 

Снесите тему, мне стыдно ))) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.