Google Guava--基础工具用法
Optional 优雅的解决Null(java 8 提供了Optional类)
Guava用Optional表示可能为null的T类型引用。一个Optional实例可能包含非null的引用(我们称之为引用存在),也可能什么也不包括(称之为引用缺失)。
Optional常用方法:
//创建指定引用的Optional实例,若引用为null则表示缺失
Optional<Shop> optional1 = Optional.fromNullable(null);
//创建指定引用的Optional实例,若引用为null则抛出NullPointerException
Optional<Shop> optional2 = Optional.of(new Shop(1,"name","addr","mobile",new Date()));
//optional1.isPresent() 如果Optional包含非null的引用(引用存在),返回true
System.out.println(optional1.isPresent()); //false
System.out.println(optional2.isPresent()); //true
//optional.or() //返回Optional所包含的引用,若引用缺失,返回指定的值
Shop shop=optional1.or(new Shop());
System.out.println(shop==null); //false
借助ComparisonChain 实现 Comparable 接口
如果我们不借助Guava,我们实现Comparable可能需要这样写:
@Override
public int compareTo(Shop that) {
int result = shop_id.compareTo(that.getShop_id();
if (result != 0) {
return result;
}
result = shop_name.compareTo(that.getShop_name());
return result;
}
当我们借助Guava ComparisonChain 实现 Comparable 接口我们可以这样写:
@Override
public int compareTo(Shop that) {
return ComparisonChain.start()
.compare(this.shop_id,that.getShop_id())
.compare(this.shop_name,that.getShop_name())
.result();
}
MoreObjects.toStringHelper() 帮助重写toString()方法
Shop newShop=new Shop(1,"帝都店","朝阳门","1111111",new Date());
System.out.println(newShop);
//demo.xxx.model.Shop@5babb90b
当类没有重写toString()方法时会调用object的toString()方法,代码如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
有时候为了方便调试我们可以使用 MoreObjects.toStringHelper() 帮助我们重写toString方法。
@Override
public String toString() {
return MoreObjects
.toStringHelper(this)
.add("shop_id", shop_id)
.add("shop_name",shop_name)
.add("create_time",create_time)
.toString();
}
//Shop{shop_id=1, shop_name=帝都店, create_time=Tue Jan 17 12:58:38 CST 2017}
Google Guava--基础工具用法的更多相关文章
- 【java】【guava】Google Guava的splitter用法
Google Guava的splitter,分割字符串的用法 package com.sxd.swapping.guava; import com.google.common.base.CharMat ...
- Google Guava的splitter用法
google的guava库是个很不错的工具库,这次来学习其spliiter的用法,它是一个专门用来 分隔字符串的工具类,其中有四种用法,分别来小结 1 基本用法: String str = " ...
- google guava 基本工具
近期在项目中用到了google中的cache了解到guava里面的一些工具类和对集合的操作,封装的都比较下,没有时间自己去写,先做个标记, 参考文章如下: http://macrochen.iteye ...
- Google的java工具类Guava
前言 google开发java项目肯定也不想重复造轮子,所以肯定也有工具类,就是它了:Guava 我将举例几个实际的例子,发挥这个工具类好用的功能.更多的方法和功能,还有内部的实现可以直接参考http ...
- Guava 是个风火轮之基础工具 (1)
转自:http://www.jamespan.me/blog/2015/02/08/guava-basic-utilities-1/ Guava 是个风火轮之基础工具 (1) 前言 Guava 是 J ...
- Google guava工具类的介绍和使用
概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率.谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来.所以就诞生了guava.. 高效设计良好的API ...
- [Google Guava] 2.4-集合扩展工具类
原文链接 译文链接 译者:沈义扬,校对:丁一 简介 有时候你需要实现自己的集合扩展.也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集 ...
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- java开发人员,最应该学习和熟练使用的工具类。google guava.(谷歌 瓜娃)
学习参考文章: http://blog.csdn.net/wisgood/article/details/13297535 http://ifeve.com/google-guava/ http:// ...
随机推荐
- 使用Revel(go)开发网站
Revel很好的利用了Go语言的goroutine,把每一个request都分配到了goroutine里.不用再写一大堆的回调.如果你写过nodejs的话就会深刻的体会到callback hell是什 ...
- #include 和 #import 的区别, @class 的含义
#import 和 #include 会包含这个类的所有信息,包括实体变量和方法 而#include比起 #import的好处不会引起重复包含 @class是用来做类引用的 @class就是告诉编译 ...
- 5款替代微软Visio的开源免费软件(转)
5款替代微软Visio的开源免费软件 提到流程图和图表设计,自然会想到微软出品的Office Visio,它是一款强大的流程图设计工具.Visio并不在Office标准套装中,需要额外付费购买,这可能 ...
- POJ1511来回最短路
POJ1511 问你从1到其它点得所有最短路之和 与 其他点到1得所有最短路之和 得总和 思路很明确就是两次最短路,翻转一次地图就好了 一开始就是两次spfa之间处理好数据得更新管理就好 vect ...
- poj2462
看八戒在做这个题,我也做了做.. 坑很多,还是要注意细节.不得不吐槽,难道又到了计算几何只能套模板否则就一串WA的情况了么! 要不是八戒做出来了,这题我估计我也就扔到这里了..哥不服啊~所以得做出来! ...
- Android ListView setOnItemClickListener/setOnItemSelectedListener,无效
在Android 开发中,有时候我们在设置,LIstview,GridView,这些View的时候,再给他们设置:setOnItemClickListener/setOnItemSelectedLis ...
- lr中错误解决方法19种
一.Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the ...
- js获取select下拉框的value值和text文本值
介绍一种取下拉框值以及绑定下拉框数据的方法 这里用到的jquery-ui-multiselect插件 1.前台html代码 <span class="ModuleFormFiel ...
- 微信退款证书使用c#
微信退款需要证书 data为已封装好的xml数据 具体怎么封装>打开 public string get(string data) { string cert = @"D:\certi ...
- 730. Count Different Palindromic Subsequences
Given a string S, find the number of different non-empty palindromic subsequences in S, and return t ...