Java SE 6의 Properies 클래스에는 setProperty(String key, String value)
이라는 메서드가 있으며 Object
을 반환합니다. 또한이 키에 대해 이전 Object
이 저장되어 있거나 없으면 NULL
이 저장됩니다. setProperty(String key, String value)
이후 만이 String
값으로, 왜 그 방법은 String
을 반환하지 않습니다 걸릴 수 있나요?Java에서 setProperty가 Object를 반환하는 이유는 무엇입니까?
8
A
답변
14
은 불행하게도 클래스 java.util.Properties
자바 1.0, 제네릭 전에 몇 년에 도입되었다. Properties
은 모든 유형의 데이터를 저장할 수있는 Hashtable
을 확장합니다. 그래서, 당신은 다음과 같은 작업을 수행 할 수
Properties props = new Properties();
props.put("key", new Object()); // use Hashtable's put method
props.setProperty("key", "value"); // use Proerties' setProperty method
이 예제 setProperty
에서이 항목에 저장된 이전 값, 즉 Object
을 반환해야합니다. 하지만 String
이 아닙니다! ClassCastException
을 피하려면 JDK 작성자가 을 반환하는 메서드로 setProperty()
을 정의해야했습니다.
BTW 지금도 클래스 속성 Map<Object, Object>
대신 이전 버전과의 호환성을 위해 Map<String, String>
구현합니다.
13
는 속성 때문에 아무것도 저장할 수있는, 해시 테이블을 확장하여 처음부터 오인되었다. 따라서 디자인은 Liskov 대체 원칙을 존중하지 않았습니다. 기본 클래스가 할 수있는 모든 것, 하위 클래스가 할 수 있어야하는 것입니다. 속성은 해시 테이블을 확장하기 때문에
, 당신은 실제로 그 안에 모든 종류의 객체를 저장할 수 있습니다.
관련 문제
- 1. EMF의 eGet이 EObject가 아닌 Object를 반환하는 이유는 무엇입니까?
- 2. MethodInterceptor 인터페이스의 invoke 메서드에서 object를 반환하는 이유는 무엇입니까?
- 3. log4net이 object를 사용하는 이유는 무엇입니까?
- 4. String == ""Java에서 C#이 아닌 false를 반환하는 이유는 무엇입니까?
- 5. AlphaBlend가 'false'를 반환하는 이유는 무엇입니까
- 6. real_connect가 null을 반환하는 이유는 무엇입니까?
- 7. SetWindowsHookEx가 0을 반환하는 이유는 무엇입니까?
- 8. scipy.sparse.linalg.svds가 ValueError를 반환하는 이유는 무엇입니까?
- 9. GetCurrentProcess가 -1을 반환하는 이유는 무엇입니까?
- 10. Type.GetElementType이 null을 반환하는 이유는 무엇입니까?
- 11. NSDateFormatter가 nil을 반환하는 이유는 무엇입니까?
- 12. BitmapFactory.decodeFile이 null을 반환하는 이유는 무엇입니까?
- 13. NSDateFormatter가 nil을 반환하는 이유는 무엇입니까?
- 14. ItemContainerGenerator가 null을 반환하는 이유는 무엇입니까?
- 15. Exception.fillInStackTrace가 Throwable을 반환하는 이유는 무엇입니까?
- 16. 배열에 객체를 반환하는 이유는 무엇입니까?
- 17. pthread_create가 int를 반환하는 이유는 무엇입니까?
- 18. corrcoef가 매트릭스를 반환하는 이유는 무엇입니까?
- 19. NSMutableArray가 nill을 반환하는 이유는 무엇입니까?
- 20. ByteBuffer.getFloat가 0.0을 반환하는 이유는 무엇입니까?
- 21. Properties.containsKey가 false를 반환하는 이유는 무엇입니까?
- 22. File.Exists가 false를 반환하는 이유는 무엇입니까?
- 23. D3DXVec3Project가 D3DXVECTOR3를 반환하는 이유는 무엇입니까?
- 24. IndexOf가 -1을 반환하는 이유는 무엇입니까?
- 25. NdisFRegisterFilterDriver가 NDIS_STATUS_FAILURE를 반환하는 이유는 무엇입니까?
- 26. Java에서 PL/SQL로 배열을 반환하는 방법은 무엇입니까?
- 27. URLClassLoader.addURL이 Java에서 보호되는 이유는 무엇입니까?
- 28. java에서 CLASSPATH가 중요한 이유는 무엇입니까?
- 29. 이것이 java에서 발생하는 이유는 무엇입니까?
- 30. 모든 것은 파이썬에서 Object를 사용하지만 키워드는 Object가 아닌 이유는 무엇입니까?
javadoc을 보면 설정 한 값만 반환된다는 것을 알 수 있습니다. –
왜냐하면 심하게 위장한 HashMap 이니까요?) –
steProperty이 1.2에서 약왔다 @ JuanAlbertoLópezCavallotti - My Javadoc은 * HashTable.put()의 결과를 * previous * 값으로 반환하고 그렇지 않으면 null을 반환한다고 말합니다. – Nivas