我正在爲我的測試用例編寫aeropsike junit測試用例。爲了存儲aerospike箱,我正在使用ConcurrentHashMap。Aerospike JUNIT記錄構造函數不起作用
// 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相關信息工作得很好。
但我面臨的問題,同時從地圖獲取記錄(實際上將bin的值從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
, 以下功能給錯誤。
/**
* Get bin value as String.
*/
public String getString(String name) {
return (String) getValue(name);
}
getValue
將返回正確的值,但(String) getValue(name)
拋出錯誤。
任何線索,爲什麼我得到這個錯誤?
謝謝sudhanshu。我得到了代碼中的實際問題。 –