Доступ к определению базового типа в кеше Ignite
Можно ли каким-то образом получить базовый ключ и определение типа значения для кэша, созданного каким-либо другим кодом? На данный момент я знаю только имя кэша. У меня нет никакой другой информации о том, как был создан кэш.
IgniteCache<K, V> dataCache = ignite.cache("dataCache");
Мне нужно получить тип K и V в строке выше.
Я буду прикреплять CacheEntryListener к кешу, и мне нужно получить доступ к полям в части значения кеша. Как мне это сделать? Есть ли способ получить доступ к информации о типе из событий CacheEntryEvent, которые я получаю в методах слушателя?
1 ответ
Кэш Ignite не имеет определения базового типа, он может содержать данные любого типа. Дженерики только для вашего удобства.
Например, вы можете сделать это:
IgniteCache<String, String> sCache = ignite.createCache("foo");
sCache.put("1", "2");
IgniteCache<Integer, Integer> iCache = ignite.cache("foo"); // same cache
iCache.put(1, 2);
IgniteCache<Object, Object> oCache = ignite.cache("foo"); // same cache
oCache.get(1); // 2
oCache.get("1"); // "2"
Однако это не рекомендуется.
Рекомендуется использовать один тип для каждого кэша: логика вашего приложения должна обеспечивать, чтобы каждый именованный кэш работал только с определенными типами данных.