Я пишу тестовые чехлы для аэробики junit для своих тестовых случаев. Для хранения контейнеров с аэрокосмическим оборудованием я использую ConcurrentHashMap.aerospike JUNIT Record Constructor не работает
// InMemory Map for storing AeroSpike Related Data...
ConcurrentMap<String, Bin[]> aerospike_keyBins = new ConcurrentHashMap<String, Bin[]>();
// InMemory Map for storing AeroSpike Related Data...
ConcurrentMap<String, Integer> aerospike_keyGen = new ConcurrentHashMap<String, Integer>();
Хранение бункеров и информации, относящейся к GenNumber, работает отлично.
Но я сталкиваюсь с проблемами при получении записи с карты (на самом деле конвертирует значения бункеров от Map
до Aerospike Record
).
Вот функция, которая, как ожидается, преобразует ее.
private Record binsToRecord(String stringKey, Bin... bins) {
Map<String, Object> mapOfBins = new HashMap<String, Object>();
for (Bin bin : bins) {
mapOfBins.put(bin.name, bin.value);
}
return new Record(mapOfBins, aerospike_keyGen.get(stringKey), 1);
}
Хотя Вызов new Record
в этой функции я получаю следующее сообщение об ошибке.
java.lang.ClassCastException: com.aerospike.client.Value$StringValue cannot be cast to java.lang.String
at com.aerospike.client.Record.getString(Record.java:66)
отладочную этот вопрос, я обнаружил, что в Record.class
из Aerospike, Следующая функция дает ошибку.
/**
* Get bin value as String.
*/
public String getString(String name) {
return (String) getValue(name);
}
getValue
возвращает правильное значение, но (String) getValue(name)
метание ошибки.
Любая подсказка о том, почему я получаю эту ошибку?
thanks sudhanshu. Я получил фактические проблемы в коде. –