我是Java新手,我想为Properties
对象中的每个键值对调用一个成员函数,如下所示:
public void addOption(String key, String value)
{
// ...
}
public void foo()
{
Properties properties = new Properties();
// reads the property list from the input byte stream
...
properties.forEach( (key, value) -> this.addOption(key, value)); // compiler error
properties.forEach( (key, value) -> System.out.println("Key: " + key + ": Value: " + value)); // OK
}
报告以下编译器错误:
The method addOption(String, String) in the type Configuration is not applicable for the arguments (Object, Object)
我做错了什么?
答案 0 :(得分:2)
java.util.Properties
延伸Hashtable<Object,Object>
。
因此,您必须将密钥和值转换为String
才能调用您的方法(假设所有键和值实际上都是String
s):
properties.forEach( (key, value) -> this.addOption((String) key, (String) value));
另一种方法是将方法的签名更改为:
public void addOption(Object key, Object value)
答案 1 :(得分:0)
您应该将key
和value
投射到String
:
properties.forEach( (key, value) -> this.addOption((String)key, (String) value));
为什么不使用Map<String,String>
来获取Generic