[Java] Объекты и ссылки

675
2
Доброго времени суток.

Есть ссылка на коллекцию ArrayList<Mob> entities; в теле класса, там же ее и объявляю:
ArrayList<Mob> entities =  DropChanger.dataMng.getEntities();
dataMng - статик ссылка;

Код:
    public ArrayList<Mob> getEntities() {
        return this.settings.Entities;
    }


Код:
public ArrayList<Mob> Entities = new ArrayList();

При загрузке мода создается экземпляр класс Settings из Json'а, таким образом Entities заполняется.

На сколько я понимаю, ArrayList<Mob> entities; должна получая ссылку на объект коллекции и дальше ссылатся на непосредственно объект в памяти. Но по непонятным мне причинами без повторного присвоения:
entities =  DropChanger.dataMng.getEntities();
Ссылка "смотрит" на какой-то левый объект, аналогичный изначально присвоенному.

Почему так?
 
1,990
18
105
Ты как-то непошагово всё расписал.
Я вот у тебя вижу строчку
Код:
public ArrayList<Mob> Entities = new ArrayList()
На каком этапе она появляется\где находится\когда запускается.
Вообще, покажи побольше кода и опиши что ты хочешь сделать.
Я уже раза 3 перечитал твоё сообщение, или я тугодум, или я тугодум.
 
675
2
Первым делом, при загрузке мода в главном классе я создаю объект, который делает из json-записей экземпляры классов:
Код:
public static DataManager dataMng;
...

dataMng = new DataManager(configDir);
dataMng.do...()


Есть класс-ловилка эвентов, который через dataMng.getEntities() получает из класса Settings(в него извлекается половина json записей) ссылочку на коллекцию:


Код:
public class Catch {

ArrayList<Mob> entities =  DropChanger.dataMng.getEntities();

@ForgeSubscribe
public...


Ну и дальше работает с этой ссылкой.

На сколько я понимаю, она должна ссылаться на объект коллекции, создаваемый при десериализации json записей.
Но если я не буду делать при улове каждого события:
Код:
entities = DropChanger.dataMng.getEntities();

Ссылка entities будет смотреть на какой-то левый объект, который я нигде не создавал.
Т.е. добавив объект в коллекцию по ссылке в классе Settings ее размер будет 5, но вот entities.size() будет возвращать 4.
[merge_posts_bbcode]Добавлено: 28.07.2014 23:31:02[/merge_posts_bbcode]

Все это действо происходит в одном потоке.
 
1,990
18
105
Хмм, не знаю.
Мне не удалось воссоздать подобную ситуацию, да и странно это всё.
Мне кажется или я что-то упустил, или ты что-то важное не описал.
WSlA8Mc.png
З.Ы. Я не знаю английский алфавит, позор мне. Даже до 6 букв, как оказалось на скрине выше.
 
771
5
О, так это ты на ру-бакките делаешь DropChanger?
Красава!
 
675
2
Спасибо, я тоже сейчас построил подобную программку, все работает отлично, а вот на практике ересь какая-то.

Ладно, в принципе, пока я описывал все это дело на тексте, мне захотелось еще раз все перепроверить.
[merge_posts_bbcode]Добавлено: 28.07.2014 23:59:22[/merge_posts_bbcode]

Majestic написал(а):
О, так это ты на ру-бакките делаешь DropChanger?
Красава!
Ну да, нужно же практиковаться, спасибо.
 
675
2
У меня сервер и клиент общаются json записями, и...
Хех, все оказалось довольно просто. Я не учел, что при десериализации коллекции, создается новый экземпляр.
После каждого общения в эвенте буду вызывать метод:
Код:
    public void updateEntities() {
        entities = DropChanger.dataMng.getEntities();
    }
 
Сверху