Guava入门第四章(Objects)

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}"));
    }
}
posted @ 2021-08-19 11:07  吕世昊  阅读(37)  评论(0编辑  收藏  举报