加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

深入浅出的说明 Properties

发布时间:2019-11-13 00:52:08 所属栏目:建站 来源:炸鸡可乐
导读:最近在看 java 集合源码的时候,发现原来我们经常使用的 Properties 类既然继承自 Hashtable!又涨见识了! 01. 摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properti
副问题[/!--empirenews.page--]

最近在看 java 荟萃源码的时辰,发明原本我们常常行使的 Properties 类既然担任自 Hashtable!又涨见地了!

深入浅出的说明 Properties

01. 择要

在荟萃系列的第一章,咱们相识到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties 等等。

深入浅出的说明 Properties

在上一章节中,咱们先容到 Hashtable 的数据布局和算法实现,在 Java 中着实尚有一个很是重要的类 Properties,它担任自 Hashtable,首要用于读取设置文件。

本文通过看 JDK 和一些网友的博客总结,首要从 Properties 的用法实例来做先容,假若有领略不妥之处,接待指正。

02. 简介

Properties 类是 java 器材包中很是重要的一个类,好比在现实开拓中,有些变量,我们可以直接硬写入到自界说的 java 列举类中。

可是有些变量,在测试情形、预出产情形、出产情形,变量所必要取的值都纷歧样,这个时辰,我们可以通过行使 properties 文件来加载措施必要的设置信息,以到达一行代码,多处情形都可以运行的结果!

最常见的好比 JDBC 数据源设置文件,properties文件以.properties作为后缀,文件内容以键=值名目誊写,左边是变量名称,右边是变量值,用#做注释,好比新建一个jdbc.properties文件,内容如下:

深入浅出的说明 Properties

Properties 类是 properties 文件和措施的中间桥梁,岂论是从 properties 文件读守信息,照旧写入信息到 properties 文件,都要经过 Properties 类。

好了,絮聒了这么多,咱们回到本文要先容的主角Properties!

从荟萃 Map 架构图可以看出,Properties 担任自 Hashtable,暗示一个耐久的 map 荟萃,属性列表以 key-value 的情势存在,Properties 类界说如下:

  1. public class Properties extends Hashtable<Object,Object> { 
  2.     ...... 

Properties 除了担任 Hashtable 中所界说的要领,Properties 也界说了以下几个常用要领,如图所示:

 深入浅出的说明 Properties

常用要领先容

set 要领(添加修改元素)

set 要领是将指定的 key, value 对添加到 map 里,在添加元素的时辰,挪用了 Hashtable 的 put 要领,与 Hashtable 差异的是, key 和 value 都是字符串。

打开 Properties 的 setProperty 要领,源码如下:

  1. public synchronized Object setProperty(String key, String value) { 
  2.     //挪用父类 Hashtable 的 put 要领 
  3.     return put(key, value); 

要领测试如下:

  1. public static void main(String[] args) { 
  2.     Properties properties = new Properties(); 
  3.     properties.setProperty("name1","张三"); 
  4.     properties.setProperty("name2","张四"); 
  5.     properties.setProperty("name3","张五"); 
  6.     System.out.println(properties.toString()); 

输出功效:

{name3=张五, name2=张四, name1=张三}

get 要领(搜刮指定元素)

get 要领按照指定的 key 值返回对应的 value,第一步是从挪用 Hashtable 的 get 要领,假若有返回值,直接返回;假如没有返回值,可是初始化时传入了defaults变量,从 defaults变量中,也就是 Properties 中,去搜刮是否有对付的变量,假若有就返回元素值。

打开 Properties 的 getProperty 要领,源码如下:

  1. public String getProperty(String key) { 
  2.     //挪用父类 Hashtable 的 get 要领 
  3.     Object oval = super.get(key); 
  4.     String sval = (oval instanceof String) ? (String)oval : null; 
  5.      //举办变量非空判定 
  6.     return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval; 

查察 defaults 这个变量,源码如下:

  1. public class Properties extends Hashtable<Object,Object> { 
  2.     protected Properties defaults; 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读