`
vipcowrie
  • 浏览: 352099 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
1167aa84-228b-38f8-88a0-4733613efdef
让Java跑起来
浏览量:64755
文章分类
社区版块
存档分类
最新评论

Google Guava:快速入门

阅读更多
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);
  }
}


3
2
分享到:
评论

相关推荐

    Getting Started with Google Guava

    《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...

    google guava

    这个部分通常会介绍如何快速入门Guava,包括添加依赖、理解Guava的核心设计理念,以及展示一些基本用例。Guava提供了如预加载(Primitives)、字符串处理(Strings)、枚举操作(Enums)和异常处理(Preconditions...

    Guava入门指南培训PPT

    ### Guava入门指南知识点详解 #### 一、Guava概述 Guava是Google推出的一款开源核心类库,它为Java开发者提供了丰富的工具类和实用工具集合。Guava旨在提高编程效率的同时确保代码的高质量和稳定性。它包含了大量...

    Guava学习入门共51页.pdf.zip

    【标题】: Guava学习入门共51页.pdf.zip 【描述】: 该压缩包文件包含了一份51页的PDF文档,主题是关于Guava库的学习入门教程。...这份51页的入门教程将帮助初学者快速上手,深入了解Guava库的各个功能和应用场景。

    Getting start with guava

    ### Guava库入门指南 #### 一、简介与背景 Google Guava库是谷歌公司推出的一个开源项目,它为Java开发者提供了丰富的工具类和API,旨在帮助开发者编写更高效、简洁且可维护的代码。Guava库包含了大量实用功能,如...

    getting started with goole guava

    《Getting Started with Google Guava》是Bill Bejeck撰写的一本关于使用Google Guava库来提高Java编码效率和质量的入门书籍。Bill Bejeck是一位拥有十年软件工程经验的资深软件工程师,他的工作涵盖了广泛项目。他...

    google android开发入门指南(第三版)(1)英文原版

    ### Google Android 开发入门指南(第三版)知识点总结 #### 一、书籍概述与目标读者 - **书籍名称**:Google Android 开发入门指南(第三版) - **目标读者**:本书面向Android初学者,旨在帮助他们从零基础快速...

    maven+springside 开发入门

    2. **模块结构**:Springside包含四个主要模块:Core(核心工具类)、JUnit4(测试支持)、Guava(Google工具集集成)和Hibernate(ORM支持)。 3. **快速启动**:Springside提供了一套模板项目,可以快速创建一个新...

    通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    系统可作为OA、网站、电子政务、ERP、CRM、APP后台等基于B/S架构的应用软件系统的快速开发框架。 1、开发工具:Eclipse、MyEclipse和其他IDE。...7、采用Google Guava Collections,性能高于Apache Collections。

    guice入门教程helloworld篇

    同时,Guice与其他Google开发的库(如Servlets、Guava等)集成良好,使得在Web应用中使用Guice更加方便。 在学习Guice的过程中,了解和实践这些基本概念是至关重要的。通过创建简单示例,如“HelloWorld”程序,...

    黑马20天学java视频看完后整理的思维导图

    13. **Java API和库**:介绍常用API,如Math、Date、Calendar,以及第三方库如Apache Commons或Google Guava的使用。 14. **设计模式**:可能涵盖了单例、工厂、观察者、装饰器等常见设计模式的概念和应用场景。 ...

    java入门,面试圣经

    Java集合框架还包括了Java Collections Framework(JCF)、Apache Commons Collections、Google Guava等重要的集合工具库。 在数据结构方面,Java提供了多种用于存储和检索数据的方式,如堆(Heap)、栈(Stack)、...

    java-collections-framework1016

    除了Java标准库提供的集合外,还有其他第三方库提供了额外的集合实现,例如Google Guava库,它提供了更多功能丰富的集合实现,如`Multiset`、`Multimap`等。 #### 七、练习 教程最后包含了一些练习题,帮助读者...

    Java学习jar包绝对超值

    这个超值的jar包集合旨在帮助初学者快速入门,同时也为经验丰富的开发者节省了查找和集成不同库的时间。 首先,数据库相关的jar包是Java开发中的重要组成部分。例如,包含MySQL、Oracle、SQL Server、PostgreSQL等...

    spring lib包,初学者,挺全的,代码

    而"libs"可能包含更多第三方库,如用于数据访问的Hibernate或MyBatis库,或者其他与Spring兼容的库,如Apache Commons、Google Guava等。 学习Spring Lib包,你需要了解Spring的核心概念和组件,如Bean的生命周期、...

    java的概要介绍与分析

    Java拥有丰富的库和框架资源,如Spring用于企业级应用开发,Hibernate和MyBatis用于数据库操作,Apache Commons和Google Guava等提供了大量实用的工具类。这些资源极大地提高了开发效率,降低了开发成本,使开发者...

    个人收集的java开发资源(会不断更新)

    5. **源码分析**:可能包含知名开源项目(如Apache Commons、Google Guava等)的源码分析,帮助理解优秀代码的设计思想。 6. **开发工具**:如IDEA、Eclipse的使用技巧,版本控制工具Git的配置与操作,构建工具...

    LAS_NXP_CUP:NXP CUP的界面

    2. **丰富的库支持**:Java拥有大量的开源库,如Apache Commons、Google Guava等,这些库为NXP CUP项目提供了丰富的功能扩展。 3. **嵌入式开发**:尽管Java通常被认为不适合嵌入式系统,但在NXP CUP中,优化过的...

Global site tag (gtag.js) - Google Analytics