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:// ...
随机推荐
- spring boot打包后windows启动乱码
事情的起因什么的就不多表了,直接进入主题... 项目都要上线了,结果发现使用 idea mvn install之后的 jar在windows下启动乱码,而使用idea启动却没有问题!!! 这是神马情况 ...
- (回文串 Manacher )Girls' research -- hdu -- 3294
http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit:1000MS Memory Limit:32 ...
- hdu2844
题目 这道题,刚开始题没读懂,就是这句话:,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of ...
- java:从消息机制谈到观察者模式
从简单的例子开始 同样,我们还是先看一个简单例子:创建一个窗口实现加法的计算功能.其效果如下: 图1: 加法计算 Calculator.java: import javax.swing.*; impo ...
- springmvc 孔浩 hibernate code
model--User package model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; ...
- [IOS] 详解图片局部拉伸 + 实现图片局部收缩
(图为微信首页右上角『+』效果) 当初还在开发WP7的时候,从IOS同事那边了解到类似微信以上功能的实现. Item条数不同,总高度也不同,这就需要将背景图片进行局部拉伸到响应的高度,并且保持上方的三 ...
- jdk tomcat maven svn plsql客户端 环境变量配置整理
1 jdk 新建: 1.JAVA_HOME ----- C:\Program Files\Java\jdk1.7.0 2.CLASSPATH ------ .;%JAVA_HOME%\li ...
- ActiveMq 配置多队列
一直在赶项目,好久没有写博文了,中间偶尔有些代码什么的,也都是放到github了,不过大多都是测试代码,毕竟有些成型的东西是给公司写的,鉴于职业道德,还是不好公开. 言归正传,这两天在接入第三方的收费 ...
- 如何用c#本地代码实现与Webbrowser中的JavaScript交互
关键词:.Net,Webbrowser,JavaScript,communication 参考: 链接:msdn实例-简单的相互调用 代码: [PermissionSet(SecurityAction ...
- Day 15 内置函数 , 匿名函数.
1. 最大值 max,最小值# #最大值 ret = max(1,2,-3)print(ret)# 结果 2ret=max([1,2,3,4])print(ret)# 结果 4 2.sum 函数用法 ...