Java: поддерживает ли Chronicle Map разные классы значений?

Обычно я создаю новый Карта хроники с использованием astatic.javadoc="iodoc.net/a> .openhft/chronicle-map/3.8.0/net/openhft/chronicle/map/ChronicleMapBuilder.html" rel="nofollow">ChronicleMapBuilder примерно так:

ChronicleMapBuilder<SomeKey, MyImplClass> builder
        = ChronicleMapBuilder.of(SomeKey.class, MyImplClass.class);

ChronicleMap<SomeKey, MyImplClass> map
        = builder.constantKeySizeBySample(someKey)
                 .averageValue(someValue)
                 .entries(myCollection.size())
                 .createPersistedTo(myFile);

Поддерживает ли Chronicle Map хранение экземпляров различных классов ценности, и если да, то как мне построить эту карту?

Например:

ChronicleMapBuilder<SomeKey, MyInterfaceThatHasManyDifferentImplementations> builder
        = // .. now what?

По сути, у меня есть только один ключевой класс — LocalDate. Но эта дата может (или, по крайней мере, я этого хочу) сопоставляться с разными реализациями общего интерфейса. Считаю, что мне повезло с общим интерфейсом, но если есть возможность построить Карту хроники и без общего интерфейса, посоветуйте.

Я сожалею, что в настоящее время у меня нет возможности протестировать поддержку Chronicle Map для различных классов значений, и я не могу найти документацию об этом в любой форме или форме в Интернете.


person Martin Andersson    schedule 12.06.2016    source источник


Ответы (1)


ChronicleMapBuilder#of принимает два аргумента Class. В худшем случае вы можете использовать Object.class как ваш класс значений (второй аргумент) и хранить любые значения на карте.

person Mureinik    schedule 12.06.2016
comment
Вы в этом уверены? Почему строитель хочет, чтобы мой аргумент класса начинался с? Наверняка они будут практиковать на нем тонны рефлексии вуду. Но я никогда не понимал, почему, поскольку я указываю размер среднего значения с реальной выборкой. - person Martin Andersson; 12.06.2016
comment
После более тщательного изучения (проверки в реальной жизни) я обнаружил, что вы правы. - person Martin Andersson; 17.06.2016
comment
@MartinAndersson Почему разработчик хочет, чтобы мой аргумент класса начинался с? на самом деле интересный вопрос. ChronicleMapBuilder требует, чтобы объекты класса ключ/значение в первую очередь проверяли наличие оптимизированных сериализаторов, предопределенных для этих классов (а именно, для упакованных примитивов, String, CharSequence, интерфейсы значений и т. д.). Отражение vodoo выполняется только в том случае, если класс ключ/значение является интерфейсом значения. - person leventov; 21.06.2016