Обработка прямых обновлений значений?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обработка прямых обновлений значений?

Сообщение Anonymous »

Пока все работает нормально. Однако я хочу иметь возможность получать значения с моей карты и использовать их методы set для непосредственного обновления значений. В отличие от других карт Java, это не работает с ChronicleMap, и я понимаю, почему. Похоже, мне нужно вызывать новый метод put() или ComputeIfPresent() или что-то в этом роде каждый раз, когда я хочу обновить свои значения. Однако для меня это не будет флаером.
Есть ли другие способы справиться с этим? Какой-нибудь слушатель, например? Использование дополнительных параметров в сериализаторе BytesWriter/Reader, который я написал.
Извините, я не объяснил это ясно.
Вот сильно сокращено Схема моей ситуации...

Код: Выделить всё

public class MyClass{
private SomeState state;
public MyClass(){
state = new SomeState(/* some params for initial value */)
}

public SomeState getState(){return state;}

public void setState(SomeState state){/* sets state */}
}

class TestClass{

@Test
public void test(){

try(Map map = ChronicleMap
.of(Integer.class, MyClass.class)
.valueMarshaller(/* my marshaller */)
.averageValue(/* average value */)
.entries(/* number of entries */)
.create()){

// Create ChronicleMap entry
MyClass a = new MyClass();
map.put(0, a);

// Modify state of the value retrieved from the map
SomeState modified = new SomeState(/* some params */);
map.get(0).setState(modified);

// Test fails - guessing because I should have done...
//
// MyClass c = map.get(0);
// c.setState(modified);
// map.put(0,c);
//
assertEquals(modified, map.get(0).getState());
}

}
}
Поэтому я не могу получить значение из ChronicleMap и обновить его свойства напрямую, не вызывая новую функцию put() — или, по крайней мере, в моем коде это не работает. Вероятно, потому что карта не в куче. Обычная Java-карта в памяти, конечно, позволила бы это сделать.
Я прав на этот счет? Как это обойти?
Большое спасибо..

Подробнее здесь: https://stackoverflow.com/questions/790 ... ue-updates
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»