我試圖將地圖值對象更改爲列表值對象,以便單個關鍵點可以存儲多個值。請找到代碼片段。將地圖<字符串,對象>轉換爲地圖<字符串,列表<Object>>
protected Subscriber updateSubscriberAttributes(Subscriber subscriber, Collection<SubscriberAttributeDto> subscriberAttributesCollection)
throws ErrorException {
// Do we have any custom attributes to store?
if ((subscriberAttributesCollection != null) && !subscriberAttributesCollection.isEmpty()) {
// Yes! Convert to a Map first.
Map<String, Object> subscriberAttributesMap = new HashMap<String, Object>(subscriberAttributesCollection.size());
for (SubscriberAttributeDto subscriberAttribute : subscriberAttributesCollection) {
// Convert the input attribute value to a database-appropriate value
SubscriberAttributeMetadata attrMetadata = subscriberAttribute.getAttributeMetadata();
if (attrMetadata != null) {
subscriberAttributesMap.put(attrMetadata.getColumnName(),
attrMetadata.convertToDatabaseValue((String) subscriberAttribute.getValue()));
}
}
// Perform the update
return updateSubscriberAttributes(subscriber, subscriberAttributesMap);
} else {
return subscriber;
}
}
對不起,代碼有點混亂。所以我在這裏遇到的麻煩是,如果我將subscribersAttributeMap
的聲明更改爲Map<String,List<Object>>
,我必須更改方法聲明並拋出這麼多錯誤。我很久就試過了。
這就是重構的一部分。 –
感謝您重構Luiggi .. –