1. 程式人生 > >java.util.Objects工具類

java.util.Objects工具類

今天看java.util.HashMap原始碼時發現這個工具類,是從jdk1.7開始引入的,很多關於物件常用的公共方法,再也不用自己心專案重新寫相關的工具類了。

  1. Objects.equals(Object a,Object b)方法,對比物件地址值是否相等,而且還是用equals方法進行比較,而且不用關心a,b物件是否為空
    public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }
  2. Objects.deepEquals(Object a,Object b)方法,深度比較,就是可以比較陣列內容是否相等
    public static boolean 
    deepEquals(Object a, Object b) { if (a == b) return true; else if (a == null || b == null) return false; else return Arrays.deepEquals0(a, b); }
  3. Objects.hashCode(Object 0),這個直接看程式碼
    public static int hashCode(Object o) {
        return o != null ? o.hashCode() : 0;
    }
  4. Object.hashCode(Object...values)上一個方法的過載
    public static int 
    hash(Object... values) { return Arrays.hashCode(values); }
  5. Objects.toString(Object o),Objects.toString(Object o,String nullDefault),直接上程式碼
    public static String toString(Object o) {
        return String.valueOf(o);
    
    public static String toString(Object o, String nullDefault) {
        return (o != null) ? o.toString() : nullDefault;
    }
  6. Objects.compare(T a,T b,Comparator<? extends T> c),地址值相同則返回0,具體排序規則自定定義
    public static <T> int compare(T a, T b, Comparator<? super T> c) {
        return (a == b) ? 0 :  c.compare(a, b);
    }
  7. Objects.requireNonNull(T obj),Objects.requireNonNull(T obj,String message),校驗引數是否為空,否則丟擲異常,jdk1.8後本方法允許將訊息的建立延遲,直到空檢查結束之後。雖然在非空例子中這可能會帶來效能優勢, 但是決定呼叫本方法時應該小心,建立message supplier的開銷低於直接建立字串訊息。
    public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }
    public static <T> T requireNonNull(T obj, String message) {
        if (obj == null)
            throw new NullPointerException(message);
        return obj;
    }
    public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
        if (obj == null)
            throw new NullPointerException(messageSupplier.get());
        return obj;
    }
  8. Objects.isNull(Object obj)判斷物件是否為空,相對應的有nonNull方法
    public static boolean isNull(Object obj) {
        return obj == null;
    }
    public static boolean nonNull(Object obj) {
        return obj != null;
    }


相關推薦

java.util.Objects工具

今天看java.util.HashMap原始碼時發現這個工具類,是從jdk1.7開始引入的,很多關於物件常用的公共方法,再也不用自己心專案重新寫相關的工具類了。 Objects.equals(Obje

Javajava.util.Objects 工具方法研究

 Objects 與 Object 區別 Object 是 Java 中所有類的基類,位於java.lang包。 Objects 是 Object 的工具類,位於java.util包。它從jdk1

java.util.Objects工具示例

java.util.Objects是java 1.7引入的,主要是對物件的一些常用操作,比如compare、equals/deepEquals、hash/hashCode、isNull/nonNull、requiredNonNull、toString這12個常用方法。 St

[瘋狂Java]基礎庫:Object、深拷貝、Objects工具

1. Object類簡介:     1) 是Java所有型別的基類,如果一個自定義的類沒有extends顯示指定其父類則它預設繼承Object類;     2) 常用方法(通常需要根據需求覆蓋,Object本身對它們的定義極其簡單):          i. 相等判斷:

Java AES 加密工具

dom .com 生成器 ogg bytes commons level result exc package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import ja

java的Arrays工具

copy false string range lis 比較 jdk util 3.4 1年多了,jdk還不是很熟,補補。 package lhy.core.util; import java.util.Arrays; import java.util.Lis

Java並發工具 - CountDownLatch

同時 線程 www. try 面試題 view mar 裏的 dex Java並發工具類 - CountDownLatch 1、簡介   CountDownLatch是Java1.5之後引入的Java並發工具類,放在java.util.concurrent包下面 htt

Java 敏感詞過濾,Java 敏感詞替換,Java 敏感詞工具

blog rds log code ima 方法 www enter iteye Java 敏感詞過濾,Java 敏感詞替換,Java 敏感詞工具類 =========================== ?Copyright 蕃薯耀 2017年9月25日 http:

java.util.concurrent CyclicBarrier

實現 .cn tint style pub interrupt com err rup CyclicBarrier類:   原文:一個同步輔助類,它允許一組線程互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的線程的程序中,

Java並發工具之CountDownLatch

clas 允許 his wait方法 輸出 throw 引用 excel文件 inter   CountDownLatch允許一個或則多個線程等待其他線程完成操作。   假如我們有這樣的需求:我們需要解析一個excel文件中的多個sheet,我們可以考慮使用多線程,每一個線

Java並發工具之並發數控制神器Semaphore

static eight 構造方法 許可證 for pan 應用場景 都是 ole   Semaphore(信號量)使用來控制通知訪問特定資源的線程數量,它通過協調各個線程,以保證合理的使用公共資源。   我們可以這麽理解Semaphore,比如一個廁所只有6個坑,同時只能

Java並發工具之線程間數據交換工具Exchanger

catch exchanger 系統 chang data 完成後 () time ktr   Exchanger是一個用於線程間協做的工具類,主要用於線程間的數據交換。它提供了一個同步點,在這個同步點,兩個線程可以彼此交換數據。兩個線程通過exchange方法交換數據,如

Java 序列化工具

pub ear base64 找不到 ror stream ger public 工具類 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; imp

Java生成證書工具 InstallCert.java解決httpClient訪問https出錯:PKIX path building failed

throw supported load Owner init software roc cti acer 編譯:javac InstallCert.java運行:java InstallCert 要訪問的網址 最後面會輸出: Enter certificate to ad

jdk1.8 java.util.stream.Stream 詳解

-c 打印 而不是 oid ole 表達 ice java-8 java 8 為什麽需要 Stream Stream 作為 Java 8 的一大亮點,它與 java.io 包裏的 InputStream 和 OutputStream 是完全不同的概念。它也不同於 StAX

java之日期工具DATE

 java日期工具類 import java.text.SimpleDateFormat; import java.util.*; public class DateUtil { /** * 獲取SimpleDateFormat * @param parttern 日

java 正則工具RegexUtil

package com.xxx.util; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public c

java程式碼-Exccel工具

package com.ufc.utils; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStrea

java發郵件工具

package cn.itcast.utils; import java.util.Properties; import javax.mail.Address; import javax.mail.Session; import javax.mail.Transport; import

java json轉換工具

在java專案中,通常會用到json型別的轉換,常常需要對 json字串和物件進行相互轉換。 在製作自定義的json轉換類之前,先引入以下依賴 <!--json解析工具--> <dependency> <groupId>com.fasterx