Java SE 6中的Properies类有一个名为的方法setProperty(String key, String value),它返回一个Object.此外,先前Object为此密钥存储,或者NULL如果不存在.既然setProperty(String key, String value)只能取一个Stringas值,那为什么不返回一个String?
Ale*_*exR 14
不幸的是,类java.util.Properties在Java 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
Run Code Online (Sandbox Code Playgroud)
在此示例中,setProperty必须返回存储在此条目中的先前值,即Object.但事实并非如此String!为了避免ClassCastExceptionJDK创建者必须定义setProperty()为返回的方法Object.
BTW甚至现在类属性实现Map<Object, Object>而不是Map<String, String>向后兼容.
JB *_*zet 13
因为属性从一开始就被误解为扩展Hashtable,它可以存储任何东西.因此,设计不尊重Liskov替换原则:基类可以做的所有事情,子类必须能够做到.
由于Properties扩展了Hashtable,因此您实际上可以在其中存储任何类型的Object.
| 归档时间: |
|
| 查看次数: |
4465 次 |
| 最近记录: |