讨论: Sun JAVA API 奇怪的设计:Properties(Properties p)

haiquan81 2008-09-05 02:23:30
在项目中碰到一个很奇怪的问题,找到原因后发现了是Properties(Properties p)在作怪:
想想下面的代码会输出什么:
Properties p = new Properties();
p.put("abc", "abc");
p.put("abcd", "abcd");
p.put("a", "abc");
p.put("b", "bc");

Properties test = new Properties(p);

Iterator i = test.keySet().iterator();
while (i.hasNext()) {
String key = (String) i.next();
System.out.println(key);
System.out.println("=");
System.out.println(test.getProperty(key));
}

System.out.println(test.getProperty("abc"));

有经验的java程序员,肯定想当然的认为是:
输出
abc=abc
abcd=abcd
a=abc
b=bc
abc

但是正真的输出是:
abc
很让人意外!!!


查看了Properties的源码发现, Properties(Properties p)构造函数是把传入的p的引用放到了它的 defauts域中,而这个defauts中的值通过keySet()方法是找不到的,
但通过getProperty()是找得到的。 真是奇怪的设计,大家有没有什么想法???

...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiquan81 2008-09-10
  • 打赏
  • 举报
回复
就像你说的,Properties虽然是个Map ,但主要功能不是用来遍历整个属性值的,一般用来getProperty 方法比较多。
  • 打赏
  • 举报
回复
Properties 虽然是个 Map 基本上不会去遍历整个属性值的,一般用 getProperty 方法比较多,呵呵。
  • 打赏
  • 举报
回复
就是提供一个默认的值呗

比如某个 Properties 配置文件,得配置 10 个参数,但是使用者只配置了 7 个参数,
还有 3 个参数没有配置,如果没有默认值的读取这三个参数就会出现空指针,如果有默
认的话,就不会产生这种情况,因为没有配置的话就使用默认的值。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方中文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方中文指导材料”中,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络表的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧