Properties구현 Map<Object, Object>하지 않습니다 Map<String, String>.
이 생성자를 호출하려고합니다.
public HashMap(Map<? extends K,? extends V> m)
...와 K와 V모두 같은 String.
그러나 Map<Object, Object>그렇지 않습니다 Map<? extends String, ? extends String>... 문자열이 아닌 키와 값을 포함 할 수 있습니다.
이것은 작동합니다.
Map<Object, Object> map = new HashMap<Object, Object>();
...하지만 그것은 당신에게 유용하지 않을 것입니다.
근본적으로, ... Properties의 하위 클래스로 만들지 말았어야했습니다 HashTable. 그게 문제입니다. v1 이후로 의도에 어긋나더라도 항상 비 문자열 키와 값을 저장할 수있었습니다. 컴포지션이 대신 사용 되었다면 API는 문자열 키 / 값으로 만 작동 할 수 있으며 모두 잘되었을 것입니다.
다음과 같은 것을 원할 수 있습니다.
Map<String, String> map = new HashMap<String, String>();
for (String key : properties.stringPropertyNames()) {
map.put(key, properties.getProperty(key));
}
Hashtable<Object, Object>문자열이 아닌 것, 심지어 문자열이 아닌 키 까지 원하는 것을 .