• Google Guava学习笔记——基础工具类针对Object类的使用


      Guava 提供了一系列针对Object操作的方法。

      1. toString方法

      为了方便调试重写toString()方法是很有必要的,但写起来比较无聊,不管如何,Objects类提供了toStringHelper方法,它用起来非常简单,我们可以看下面的代码:

      

    public class Book implements Comparable<Book> {
    
        private Person author;
        private String title;
        private String publisher;
        private String isbn;
        private double price;            
    
        /*
         *  getter and setter methods
         */
     public String toString() {
          return Objects.toStringHelper(this)
                  .omitNullValues()
                  .add("title", title)
                  .add("author", author)
                  .add("publisher", publisher)
                  .add("price",price) 
                  .add("isbn", isbn).toString();
      }
     
    }

      注意,在新的版本中,使用MoreObjects类的toStringHelper替代原来的方法,原来的方法deprecated了。

       2,检查是否为空值

        firstNonNull方法有两个参数,如果第一个参数不为空,则返回;如果为空,返回第二个参数。

        String value = Objects.firstNonNull("hello", "default value");

        注意,此方法也已经废弃了,可以使用 String value = MoreObjects.firstNonNull("hello", "default value"); 来代替。

      3,生成 hash code

    public int hashCode() {
            return Objects.hashCode(title, author, publisher, isbn,price);
        }

      4,实现CompareTo方法

       我们以前的写法是这样的: 

    public int compareTo(Book o) {
            int result = this.title.compareTo(o.getTitle());
            if (result != 0) {
                return result;
            }
    
            result = this.author.compareTo(o.getAuthor());
            if (result != 0) {
                return result;
            }
            
            result = this.publisher.compareTo(o.getPublisher());
            if(result !=0 ) {
                return result;
            }
            
            return this.isbn.compareTo(o.getIsbn());
        }

      改进后的方法:

    public int compareTo(Book o) {
            return ComparisonChain.start()
                    .compare(this.title, o.getTitle())
                    .compare(this.author, o.getAuthor())
                    .compare(this.publisher, o.getPublisher())
                    .compare(this.isbn, o.getIsbn())
                    .compare(this.price, o.getPrice())
                    .result();
        }

      

  • 相关阅读:
    html5 canvas头像裁剪上传
    仿qq空间相册的图片批量上传
    仿美图秀秀的自由拼图
    actionscript3头像裁剪上传
    让ie6 7 8 9支持html5 websocket
    美化图片滤镜
    仿优酷频道首页的图片切换效果
    html5版canvas自由拼图
    php简易灌水
    php图片防盗链的小测试
  • 原文地址:https://www.cnblogs.com/IcanFixIt/p/4512049.html
Copyright © 2020-2023  润新知