以某個工具類來說,如果其只提供靜態參數和靜態方法,則這個工具類完全不需要實例化。
然而,在缺少顯式構造器的情況下,編譯器會自動提供一個無參的,共有的構造函數。
所以為了避免這個情況,我們要主動的提供一個私有的無參構造函數來避免工具類自動實例化。
下面時 SHA-256加密算法工具類,用來舉例。
/** * @author lyn * @date 2020-1-9 11:02 */
public class SHA256Util { /** 私有構造器 **/
private SHA256Util(){} /** 加密算法 **/
public final static String HASH_ALGORITHM_NAME = "SHA-256"; /** 循環次數 **/
public final static int HASH_ITERATIONS = 10; /** 執行加密-采用SHA256和鹽值加密 **/
public static String sha256(String password, String salt) { return new SimpleHash(HASH_ALGORITHM_NAME, password, salt, HASH_ITERATIONS).toString(); } }