Hutool 3.0.9 发布,Java 工具集 - 开源中国社区
Float_left Icon_close
Hutool 3.0.9 发布,Java 工具集
路小磊 2017年07月29日

Hutool 3.0.9 发布,Java 工具集

路小磊 路小磊 发布于2017年07月29日 收藏 102

Hutool 是一个Java工具包,提供了丰富的文件、日期、日志、正则、字符串、配置文件等工具方法,并封装了一套简单易用的ORM框架。

主页:http://hutool.cn/

文档:http://hutool.mydoc.io/ (感谢开源中国提供非常好用的Team文档平台)

-----------------------------------------------------------------------------------------------

### 新特性
* CollectionUtil增加针对Map的排序(issue#30@osc)
* 增加ArrayUtil.reverse方法
* 增加StrUtil.reverse方法
* 增加NumberWordFormater和Convert.numberToWord方法(感谢@【福建】极速蜗牛)
* IoUtil和FileUtil增加readLines(LineHandler)方法用于按行处理(感谢@汪汪)
* 扩充NumberUtil,提供对BigDecimal参数支持(感谢@【杭州】KIWI)
* 新增ReflectUtil,将原有ClassUtil部分方法迁入,同时提供针对父类私有字段、方法的访问支持
* ArrayUtil增加min和max方法(感谢@【贵阳】shadow)
* 增加Caller类,用于获取调用者类(感谢@【北京】宁静)
* JSONUtil.parse方法支持是否忽略空值的参数
* JSONObject支持初始大小和按照KEY有序(感谢【深圳】Vmo)
* 对ImageUtil重构以支持更对类型参数
* DateTime增加offsetNew方法
* 增加Range类,抽象递增递减列表(感谢@【悉尼】C - ActFramework)
* 扩充XmlUtil,提供更多重载方法(感谢@【北京】仓山有井名为空)
* NumberUtil增加decimalFormatMoney方法(感谢@【北京】宁静 )
* FileUtil增加rename方法
* 增加Copier接口抽象拷贝
* 增加FileCopier强化文件拷贝
* ZipUtil增加多个流的方法(issue#IE5ZC@osc)
* HttpResponse支持body异步,既执行executeAsync()方法后不再直接读取body,而是持有http流对象
* 新增ClassLoaderUtil


### Bug修复
* 修复Entity.parseEntity方法中获取表名逻辑的问题(感谢@【北京】游弋苍茫)
* 修复批量插入值顺序错乱问题(感谢@【北京】游弋苍茫)
* 修复ComparatorChain的equals方法问题
* 修复ArrayUtil.isEmpty(Object)方法问题(pull request #28@github)
* 修复JSONUtil#toBean 和FileUtil#equals中的问题(pull request #31@github)
* 正文获取编码问题修复(@talent-aio)
* 修复Http部分定义编码不能应用于Response的问题(issue#31@osc)
* 修复FileUtil.equals方法在两个文件都不存在的情况下判定问题
* 修复Http请求结果多出一个换行的问题(感谢@【北京】仓山有井名为空)
* 修复StrUtil.cleanBlank方法中length方法调用两次问题(感谢@【天津】〓下页)
* 修复IoUtil.readHex28Lower方法参数传入错误(issue#IE81V@osc)
-----------------------------------------------------------------------------------------------

PS: 忙碌的七月让人显得略感疲惫,希望这种忙碌对未来的自己是值得的。感谢大家对Hutool的建议并和我一起为它添砖加瓦。也希望更多的人可以借助Hutool节省更多的时间,多把时间留给家人。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Hutool 3.0.9 发布,Java 工具集
分享
评论(35)
精彩评论
1
强烈支持,一直在使用。所有项目都用了糊涂工具类。
这个工具类有着“明天的属性”,就是当你用上以后,就再也回不去,扔不掉了。
1
非常好用,一直在用
最新评论
0

引用来自“Sky浪翻云”的评论

3.1.0 ArrayUtil.isEmpty(Object) 还有bug Object.size==0 不起作用

引用来自“路小磊”的评论

0 == Array.getLength(array)判断长度。这块有何问题?

引用来自“Sky浪翻云”的评论

List<?> list = new ArrayList<?>();
ArrayUtil.isEmpty(list) ;//返回false 这里list!=null 但是 list.size==0 集合不是空,但里面没有任何元素
List<?> list = null;
ArrayUtil.isEmpty(list) ;//返回true
List不应该用ArrayUtil,应该用CollectinUtil
0

引用来自“Sky浪翻云”的评论

3.1.0 ArrayUtil.isEmpty(Object) 还有bug Object.size==0 不起作用

引用来自“路小磊”的评论

0 == Array.getLength(array)判断长度。这块有何问题?
List<?> list = new ArrayList<?>();
ArrayUtil.isEmpty(list) ;//返回false 这里list!=null 但是 list.size==0 集合不是空,但里面没有任何元素
List<?> list = null;
ArrayUtil.isEmpty(list) ;//返回true
0

引用来自“Sky浪翻云”的评论

3.1.0 ArrayUtil.isEmpty(Object) 还有bug Object.size==0 不起作用
0 == Array.getLength(array)判断长度。这块有何问题?
0
3.1.0 ArrayUtil.isEmpty(Object) 还有bug Object.size==0 不起作用
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!

引用来自“路小磊”的评论

望明示

引用来自“Mr.CT”的评论

指示你妹,你调用一下就不知道了吗?别像个大爷似的!

引用来自“路小磊”的评论

确认bug。但是请放尊重。没人欠您的。
是我欠你的BUG
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!

引用来自“路小磊”的评论

望明示

引用来自“Mr.CT”的评论

指示你妹,你调用一下就不知道了吗?别像个大爷似的!
确认bug。但是请放尊重。没人欠您的。
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!

引用来自“路小磊”的评论

望明示
指示你妹,你调用一下就不知道了吗?别像个大爷似的!
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!

引用来自“JC_404”的评论

什么场景下会出现什么问题。
只贴一段代码,大家都云里雾里.get 不到你的点
get 不到没关系啊!迟早会发现的!
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!
什么场景下会出现什么问题。
只贴一段代码,大家都云里雾里.get 不到你的点
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我

引用来自“Mr.CT”的评论

  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!
望明示
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!

引用来自“路小磊”的评论

这个有何问题?请明示。建议在git.oschina上新建issue提给我
  /**

   * 格式化文本,使用 {varName} 占位<br>

   * map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue

   *

   * @param template 文本模板,被替换的部分用 {key} 表示

   * @param map 参数值对

   * @return 格式化后的文本

   */
  public static String format(CharSequence template, Map<?, ?> map) {
    if (null == template) {
      return null;
    }
    if (null == map || map.isEmpty()) {
      return template.toString();
    }

    final String template2 = template.toString();
    for (Entry<?, ?> entry : map.entrySet()) {
      template = template2.replace("{" + entry.getKey() + "}", utf8Str(entry.getValue()));
    }
    return template2;
  }

这段,你看看!!
0

引用来自“寂寞不痛”的评论

围观中,等成熟一些吧,感觉bug有点多
欢迎围观。bug的存在是客观事实,我在努力修复中。也欢迎提交issue~不过Hutool发展到3.x,也趋于完善,我想它的未来会更好。
0

引用来自“WeiXiaodong”的评论

这些工具类的性能怎么样
性能问题不能泛泛而谈。工具类中有些方法是为了性能而优化,比如反射工具类,做了缓存,可以做到性能提升。而另一部分工具类是为了便捷性减少代码量,因此性能提升几乎为0,但是却提升了非常高的开发效率。更多问题欢迎一起探讨。
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~

引用来自“Mr.CT”的评论

StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!
这个有何问题?请明示。建议在git.oschina上新建issue提给我
0
围观中,等成熟一些吧,感觉bug有点多
0
这些工具类的性能怎么样
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!

引用来自“路小磊”的评论

这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~
StrUtils,第1189行,方法:public static String format(CharSequence template, Map<?, ?> map) 有个BUG.
先提个BUG吧!估计有一堆!
0

引用来自“Mr.CT”的评论

isEmpty这么简单的方法也有BUG,我也是醉了!
这个确实属于低级错误。以后会增加单元测试覆盖率。欢迎提issue~~
0

引用来自“闲大赋”的评论

支持一下
哈哈,谢谢~~
0
isEmpty这么简单的方法也有BUG,我也是醉了!
顶部