在单个函数中重构java,该函数检查不同数据类型的null

时间:2015-03-06 08:43:32

标签: java

我有很多声明,如下所示

boolean isIdEqual = (retrievedEdition.getId() == null && edition.getId() == null) || (retrievedEdition.getId() !=null && edition.getId() != null && retrievedEdition.getId().equals(edition.getId())); 

用于单元测试。我正在为几种数据类型检查null,例如long,int,Integer,String。 我想要一个可以检查两种数据类型并缩短上述语句并重构该代码的函数。

4 个答案:

答案 0 :(得分:1)

Objects.equals(Object, Object)无法为您效劳?

Objects.equals(retrievedEdition.getId(), edition.getId());

来自JavaDoc

  

如果参数彼此相等则返回true,否则返回false。因此,如果两个参数都为null,则返回true,如果只有一个参数为null,则返回false。否则,通过使用第一个参数的equals方法确定相等性。

{7}中引入了Objects类,如果您使用的是早期版本,则实现如下所示:

/**
 * Returns {@code true} if the arguments are equal to each other
 * and {@code false} otherwise.
 * Consequently, if both arguments are {@code null}, {@code true}
 * is returned and if exactly one argument is {@code null}, {@code
 * false} is returned.  Otherwise, equality is determined by using
 * the {@link Object#equals equals} method of the first
 * argument.
 *
 * @param a an object
 * @param b an object to be compared with {@code a} for equality
 * @return {@code true} if the arguments are equal to each other
 * and {@code false} otherwise
 * @see Object#equals(Object)
 */
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

答案 1 :(得分:1)

您可以使用三元表达式简化该代码:

boolean isIdEqual = retrievedEdition.getId() != null ? retrievedEdition.getId().equals(edition.getId()) : edition.getId() == null;

答案 2 :(得分:0)

这里有很多东西..

我正在为多种数据类型检查null,例如long,int,Integer,String。 - >在原语的情况下,您无法检查null

接下来,

我想要一个可以检查两种数据类型的功能

这样的事情可能有用......

boolean checkForNull(Object o1, Object o2){
 {
   //check here
 }

答案 3 :(得分:0)

public class Validator {
    public static boolean checkEqualsOrNull(Object o1, Object o2) {
        if (o1 == null && o2 == null) {  
            return false;
        } else {
           return o1.equals(o2);
        }
    }
}

您可以在代码中使用它,如下所示

boolean isIdEqual = Validator.checkEqualsOrNull(retrievedEdition.getId() , 
                                                edition.getId());

这是一个通用功能,可用于所有检查。