Objects详细介绍
package com.lvshihao.guava;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ComparisonChain;
import org.junit.Test;
import java.util.Calendar;
import com.google.common.base.Objects;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
/**
*@author: LVSHIHAO
*@description: GUAVA Objects detailed introduction
*/
public class ObjectsTest {
static class Guava implements Comparable<Guava>{
private final String manufacturer;
private final String version;
private final Calendar releaseDate;
public Guava(String manufacturer, String version, Calendar releaseDate) {
this.manufacturer = manufacturer;
this.version = version;
this.releaseDate = releaseDate;
}
@Override
public String toString() {
/**
* toStringHelper()toString助手,可以通过这个方法处理toString的结果
* The result of to String can be processed by this method
*/
return MoreObjects.toStringHelper(this).omitNullValues()
.add("manufacturer",this.manufacturer)
.add("version",this.version)
.add("releaseDate",this.releaseDate).toString();
}
@Override
public boolean equals(Object o) {
/**
* use Guava Objects Equal Method
*/
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Guava guava = (Guava) o;
return Objects.equal(manufacturer, guava.manufacturer) &&
Objects.equal(version, guava.version) &&
Objects.equal(releaseDate, guava.releaseDate);
}
@Override
public int hashCode() {
/**
* use Guava Objects HashCode Method
*/
return Objects.hashCode(manufacturer, version, releaseDate);
}
@Override
public int compareTo(Guava o) {
/**
* use Guava ComparisonChain compare Method
*/
return ComparisonChain.start().
compare(this.manufacturer,o.manufacturer)
.compare(this.version,o.version)
.compare(this.releaseDate,o.releaseDate).result();
}
}
@Test
public void testGuavaObjects() {
Guava guava2=new Guava("alibaba","1.0.0",Calendar.getInstance());
assertThat(guava2.toString(),equalTo("Guava{manufacturer=alibaba, version=1.0.0}"));
}
}