阿里巴巴 Java 开发手册学习记录

阿里巴巴Java开发手册

【强制】 Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用
equals 。
正例:“test”.equals(object);
反例:object.equals(“test”);
说明:推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。

public class Test01 {

	// 不能使用一个值为 null 的引用类型变量来调用非静态方法,否则会抛出异常
    @Test
    public void test() {
        String str = null;
        str.equals("test");
    }
	// NPE
	
	// 正确写法
    @Test
    public void test1() {
        "test".equals(null);
    }
	// 测试通过
	
	// 推荐使用 java.util.Objects#equals(JDK7 引入的工具类)
    @Test
    public void test2() {
        Objects.equals(null, "test");
    }
	// 测试通过
}

推荐写法:

	//  java.util.Objects#equals 源码
    public static boolean equals(Object a, Object b) {
    	// 可以避免空指针异常。如果 a==null 的话此时 a.equals(b) 就不会得到执行,避免出现空指针异常。
        return (a == b) || (a != null && a.equals(b));
    }

你可能感兴趣的:(Java,基础,阿里java开发手册)