Google Guava快速入门
众所周知,Apache commons提供了一系列强大的功能库,对JDK提供了很好的补充,但是这里不介绍commons,这里介绍给大家的是Google Guava,一个被多数人遗忘的英雄。他是一个独立的库,为大家提供了日常开发经常使用的函数,包括集合处理、字符串处理、并发、IO、原始类型处理和异常处理等。
Google Guava太强大,里面函数太多,这里我只能选取一些比较典型的介绍给大家,让大家有一个初步的认识。
Objects
Objects是的实现类的hashcode()/equals()方法很简单,那些希望在类里面实现toString()以方便调试和日志查看的情况,自己写toString()实在太麻烦了,Objects.toStringHelper()就能够使得这项工作很简单:
public class Item {
private String id;
private String name;
public Item(String id, String name) {
this.id = id;
this.id = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
return Objects.hashCode(getId(), getName());
}
@Override
public String toString() {
return Objects.toStringHelper(this).add("id", getId()).add("name", getName()).toString();
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Item)) {
return false;
}
Item other = (Item) o;
return Objects.equal(getId(), other.getId()) && Objects.equal(getName(), other.getName());
}
}
这个toString的结果是:
Item{id=1, name=Book}
Throwables
对异常对象进行封装不总是合适的,因为这可能导致ClassNotFoundException(可能因为不同的classloader或者序列化导致此问题),Throwables能够解耦,并且允许远程的客户端看到异常堆栈的内容:
try {
// throws implementation specific exception
} catch (InternalException e) {
throw new ApiException("reason", Throwables.getStackTraceAsString(e));
}
Iterables
对两个集合进行合并,然后对他们的元素进行处理,这个工作需要耗费很多的代码,但是有了Iterables,事情就简单多了:
for (Item item : Iterables.concat(books, electronics)) {
// do something useful
}
Preconditions
很多情况下,一个类的构造函数或者方法的参数都需要对参数的值进行限制,非法的值应该被及时发现和处理,一般情况下,对这些非法的情况快速的返回异常比在后面再处理要好得多。
public Item(String id, String name) {
this.id = Preconditions.checkNotNull(id, "id must not be null");
this.name = Preconditions.checkNotNull(name, "name must not be null");
Preconditions.checkArgument(name.length() > 6, "name must be longer than 6 chars");
}
Constraints
Constraints和Preconditions很类似,但是它是被用来限制集合的元素,这样能够使得代码很干净,因为限制性的代码和业务代码分开了。
public class Voyage {
private Country targetcountry;
private int capacity;
private List<Cargo> items = Constraints.constrainedList(new ArrayList<Cargo>(), new Constraint<Cargo>() {
@Override
public Cargo checkElement(Cargo cargo) {
Preconditions.checkNotNull(cargo);
Preconditions.checkArgument(targetcountry.allows(cargo));
Preconditions.checkArgument(cargo.getUnits() gt; 0);
return cargo;
}
});
public void load(List<Cargo> cargos) {
items.addAll(cargos);
}
}
分享到:
相关推荐
《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...
这个部分通常会介绍如何快速入门Guava,包括添加依赖、理解Guava的核心设计理念,以及展示一些基本用例。Guava提供了如预加载(Primitives)、字符串处理(Strings)、枚举操作(Enums)和异常处理(Preconditions...
### Guava入门指南知识点详解 #### 一、Guava概述 Guava是Google推出的一款开源核心类库,它为Java开发者提供了丰富的工具类和实用工具集合。Guava旨在提高编程效率的同时确保代码的高质量和稳定性。它包含了大量...
【标题】: Guava学习入门共51页.pdf.zip 【描述】: 该压缩包文件包含了一份51页的PDF文档,主题是关于Guava库的学习入门教程。...这份51页的入门教程将帮助初学者快速上手,深入了解Guava库的各个功能和应用场景。
### Guava库入门指南 #### 一、简介与背景 Google Guava库是谷歌公司推出的一个开源项目,它为Java开发者提供了丰富的工具类和API,旨在帮助开发者编写更高效、简洁且可维护的代码。Guava库包含了大量实用功能,如...
《Getting Started with Google Guava》是Bill Bejeck撰写的一本关于使用Google Guava库来提高Java编码效率和质量的入门书籍。Bill Bejeck是一位拥有十年软件工程经验的资深软件工程师,他的工作涵盖了广泛项目。他...
### Google Android 开发入门指南(第三版)知识点总结 #### 一、书籍概述与目标读者 - **书籍名称**:Google Android 开发入门指南(第三版) - **目标读者**:本书面向Android初学者,旨在帮助他们从零基础快速...
2. **模块结构**:Springside包含四个主要模块:Core(核心工具类)、JUnit4(测试支持)、Guava(Google工具集集成)和Hibernate(ORM支持)。 3. **快速启动**:Springside提供了一套模板项目,可以快速创建一个新...
系统可作为OA、网站、电子政务、ERP、CRM、APP后台等基于B/S架构的应用软件系统的快速开发框架。 1、开发工具:Eclipse、MyEclipse和其他IDE。...7、采用Google Guava Collections,性能高于Apache Collections。
同时,Guice与其他Google开发的库(如Servlets、Guava等)集成良好,使得在Web应用中使用Guice更加方便。 在学习Guice的过程中,了解和实践这些基本概念是至关重要的。通过创建简单示例,如“HelloWorld”程序,...
13. **Java API和库**:介绍常用API,如Math、Date、Calendar,以及第三方库如Apache Commons或Google Guava的使用。 14. **设计模式**:可能涵盖了单例、工厂、观察者、装饰器等常见设计模式的概念和应用场景。 ...
Java集合框架还包括了Java Collections Framework(JCF)、Apache Commons Collections、Google Guava等重要的集合工具库。 在数据结构方面,Java提供了多种用于存储和检索数据的方式,如堆(Heap)、栈(Stack)、...
除了Java标准库提供的集合外,还有其他第三方库提供了额外的集合实现,例如Google Guava库,它提供了更多功能丰富的集合实现,如`Multiset`、`Multimap`等。 #### 七、练习 教程最后包含了一些练习题,帮助读者...
这个超值的jar包集合旨在帮助初学者快速入门,同时也为经验丰富的开发者节省了查找和集成不同库的时间。 首先,数据库相关的jar包是Java开发中的重要组成部分。例如,包含MySQL、Oracle、SQL Server、PostgreSQL等...
而"libs"可能包含更多第三方库,如用于数据访问的Hibernate或MyBatis库,或者其他与Spring兼容的库,如Apache Commons、Google Guava等。 学习Spring Lib包,你需要了解Spring的核心概念和组件,如Bean的生命周期、...
Java拥有丰富的库和框架资源,如Spring用于企业级应用开发,Hibernate和MyBatis用于数据库操作,Apache Commons和Google Guava等提供了大量实用的工具类。这些资源极大地提高了开发效率,降低了开发成本,使开发者...
5. **源码分析**:可能包含知名开源项目(如Apache Commons、Google Guava等)的源码分析,帮助理解优秀代码的设计思想。 6. **开发工具**:如IDEA、Eclipse的使用技巧,版本控制工具Git的配置与操作,构建工具...
2. **丰富的库支持**:Java拥有大量的开源库,如Apache Commons、Google Guava等,这些库为NXP CUP项目提供了丰富的功能扩展。 3. **嵌入式开发**:尽管Java通常被认为不适合嵌入式系统,但在NXP CUP中,优化过的...