为什么Java Vector被认为是遗留类,已过时或已弃用?
在使用并发时,它的使用是否有效?
如果我不想手动同步对象而只想使用线程安全的集合而不需要制作底层数组的新副本(就像CopyOnWriteArrayList那样),那么它可以使用Vector吗?
怎么样Stack,这是一个子类Vector,我应该怎么用,而不是它?
的java.util.Properties类是代表一地图,其中键和值都是字符串.这是因为Properties对象用于读取.properties文件,文件是文本文件.
那么,为什么在Java 5中他们改进了这个类来实现Map<Object,Object>而不是Map<String,String>?
该javadoc的状态:
由于Properties继承自Hashtable,因此put和putAll方法可以应用于Properties对象.强烈建议不要使用它们,因为它们允许调用者插入其键或值不是字符串的条目.应该使用setProperty方法.如果在包含非String键或值的"受损"Properties对象上调用store或save方法,则调用将失败.
由于键和值都应该是字符串,那么为什么不使用正确的泛型类型静态强制执行呢?
我想制作Properties工具Map<String,String>不会完全向后兼容为Java 5之前编写的代码.如果你有旧的代码将非字符串粘贴到Properties对象中,那么该代码将不再用Java 5编译.但是... isn'那是件好事吗?在编译时捕获这种类型错误不是泛型的全部意义吗?