WeakReference при нехватке памяти удалил ссылки, а значит в следующий раз, при вызове getId, будет возвращено не то, что было ранее
Не такое поведение ожидается, к сожалению
Evhen, Спасибо
А может еще подскажите, можно ли перехватить вызов конструктора на объектах, где класс помечен аннотацией? и установить ему ID автоинкремент
Или такое нельзя будет решить так?
Evhen, по сути, для массивов действительно можно сделать аспект, который будет их клонировать и принять условно, что их изменения без сеттера - игнорируется.
Для коллекций-отслеживать изменения в аспектах.
Для примитивов и ссылок на другие структуры-через сеттер.
Evhen, а вы не знаете, можно ли обьявить аспект без использования аннотации? Если я не знаю ни пакета, в котором компоненты лежат, ни названий методов сеттеров-как быть?
Это все в рантайме сканируется, у компонентов есть своя аннотация
Evhen, задача-я пишу серверную часть для игры, там ECS, мне хочется, чтобы когда система изменяет компонент, то изменение подхватывалось сразу.. Вот и все.. Компоненты пишутся отдельно от ядра, поэтому хотелось бы писать компоненты как обычные POJO, без особой логики из ядра и использовать их также...
Сейчас сделал на прокси, как вы говорите, но уперся в то, что каждый раз создавать прокси дорого. Да и сейчас работает только с примитивами, в этом проблема..
Почитаю насчет аспектов, мне кажется это то, что нужно!
Спасибо
Здравствуйте! В целом неплохое решение, вы безусловно правы, но как быть с коллекциями?
По сути, они возвращают ссылку из геттера и сеттер уже может не вызыватся, при этом коллекция мутирует.. А также с обычными массивами есть проблема, их вообще расширить нельзя
Сергей Горностаев, Получается, что все будет в одном потоке, а если второй раз вызывают лок на тех объектах, которые не вошли в первую группу-им должно выдать лок моментально, если нет пересечений объектов, а если есть-должно ждать, пока первый лок завершится
Как обойти дедлоки не ясно тоже