请参考以下方法:
public Properties getProperties()
{
try
{
Properties properties = new Properties();
loadProperties(properties);
for (Object key : properties.keySet())
{
properties.setProperty((String) key, convertPropertyValue(properties.getProperty((String) key)));
}
// Add Config API Keys/Values
IConfigurationManager configMgr = ConfigurationManager.getInstance();
Map<String, Setting> settings = configMgr.getSettings();
for (String key : settings.keySet()) {
properties.setProperty(key, settings.get(key).getValue());
}
return properties;
} catch (java.io.IOException ex)
{
return null;
}
}
当我将代码更改为settings.entrySet()
而不是settings.keySet()
时,它会引发以下错误:
<<< error: incompatible types
[ERROR] for (String key : settings.entrySet()) >>>
我可以理解,由于entrySet
返回的密钥值对只有密钥,我收到了不兼容的错误。
如何为以下代码实现entrySet
以修复声纳违规?
以下是设置键和值的setProperty()
方法
public synchronized Object setProperty(String key, String value) {
return put(key, value);
}
答案 0 :(得分:7)
Map.entrySet()
返回Set<Map.Entry>
类型。 Map.Entry
用于将每个键和相关值保持在一起。由于可以使用传统的for-each循环迭代Set
,因此您可以像这样重写for循环:
for (Map.Entry<String, Setting> entry : settings.entrySet()) {
properties.setProperty(entry.getKey(), entry.getValue().getValue());
}