Guava是Google的Java核心库,基于Java5+.
Guava由
这些包组成.其中base包中提供了一些与commons-lang类似的功能类.比如toString,equals方法的构造器.字符串处理的相关静态方法.但是Guava中提供等价功能的API更加易用,也更灵活.现在就从base包开始讲起.
[size=small;]com.google.common.base[/size]
Objects类
上述代码显示了Objects中几乎所有方法.此外还有一个equal静态方法.方法签名如下:
static boolean equal(Object a, Object b)
该方法可以安全的传入null值,避免抛出NullPointerException.
Preconditions类
这个类提供了一些静态方法check*,可以使用这些方法在自己的方法中检查参数的正确性.
上述代码可以替换为如下
Guava由
com.google.common.annotations
com.google.common.base
com.google.common.base.internal
com.google.common.collect
com.google.common.io
com.google.common.net
com.google.common.primitives
com.google.common.util.concurrent
这些包组成.其中base包中提供了一些与commons-lang类似的功能类.比如toString,equals方法的构造器.字符串处理的相关静态方法.但是Guava中提供等价功能的API更加易用,也更灵活.现在就从base包开始讲起.
[size=small;]com.google.common.base[/size]
Objects类
public class Person {
final String name, nickname;
final Movie favMovie;
@Override public boolean equals(Object object) {
if (object instanceof Person) {
Person that = (Person) object;
return Objects.equal(this.name, that.name)
&& Objects.equal(this.nickname, that.nickname)
&& Objects.equal(this.favMovie, that.favMovie);
}
return false;
}
@Override public int hashCode() {
return Objects.hashCode(name, nickname, favMovie);
}
@Override public String toString() {
return Objects.toStringHelper(this)
.add("name", name)
.add("nickname", nickname)
.add("favMovie", favMovie)
.toString();
}
public String preferredName() {
return Objects.firstNonNull(nickname, name);
}
上述代码显示了Objects中几乎所有方法.此外还有一个equal静态方法.方法签名如下:
static boolean equal(Object a, Object b)
该方法可以安全的传入null值,避免抛出NullPointerException.
Preconditions类
这个类提供了一些静态方法check*,可以使用这些方法在自己的方法中检查参数的正确性.
if (state != State.PLAYABLE) {
throw new IllegalStateException("Can't play movie; state is " + state);
}
上述代码可以替换为如下
Preconditions.checkState(state == State.PLAYABLE,"Can't play movie; state is %s