Java의 Objects 클래스: 유용한 유틸리티 메서드
Java의 Objects 클래스는 Java 7에서 도입된 유틸리티 클래스입니다. 이 클래스는 객체를 다루는 데 유용한 메서드들을 제공하여 개발자가 더 안전하고 간편하게 코드를 작성할 수 있도록 도와줍니다. 이번 글에서는 Objects 클래스의 주요 메서드들과 그 사용 예를 살펴보겠습니다.
1. equals(Object a, Object b)
이 메서드는 두 객체가 동일한지 여부를 확인합니다. 특히 null-safe 하다는 점이 큰 장점입니다. 두 객체 중 하나가 null인 경우에도 NullPointerException을 발생시키지 않고 동등성을 확인할 수 있습니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
String str3 = null;
System.out.println(Objects.equals(str1, str2)); // true
System.out.println(Objects.equals(str1, str3)); // false
}
}
2. hash(Object... values)
여러 객체의 해시 코드를 결합하여 하나의 해시 코드를 생성합니다. 이를 통해 여러 필드를 포함한 객체의 고유한 해시 코드를 만들 수 있습니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String name = "John";
int age = 30;
System.out.println(Objects.hash(name, age)); // 해시 코드 출력
}
}
3. hashCode(Object obj)
객체의 해시 코드를 반환합니다. 객체가 null인 경우 0을 반환합니다. 이 메서드는 해시 기반 컬렉션 (예: HashMap, HashSet)에서 유용하게 사용됩니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str = "hello";
String nullStr = null;
System.out.println(Objects.hashCode(str)); // str의 해시 코드 출력
System.out.println(Objects.hashCode(nullStr)); // 0 출력
}
}
4. isNull(Object obj)
객체가 null인지 확인합니다. 이 메서드를 사용하면 null 체크를 더 간결하게 작성할 수 있습니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str = null;
if (Objects.isNull(str)) {
System.out.println("The string is null");
}
}
}
5. nonNull(Object obj)
객체가 null이 아닌지 확인합니다. null이 아닌지 확인할 때 유용합니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str = "hello";
if (Objects.nonNull(str)) {
System.out.println("The string is not null");
}
}
}
6. requireNonNull(T obj)
객체가 null이 아닌지 확인하고, null일 경우 NullPointerException을 발생시킵니다. 메서드 인자나 반환값이 null이 아닌지 보장할 때 사용합니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str = null;
try {
Objects.requireNonNull(str, "String cannot be null");
} catch (NullPointerException e) {
System.out.println(e.getMessage()); // "String cannot be null" 출력
}
}
}
7. toString(Object obj)
객체의 문자열 표현을 반환합니다. 객체가 null인 경우 "null"을 반환합니다. 이는 문자열 결합이나 출력에 유용합니다.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String str = "hello";
String nullStr = null;
System.out.println(Objects.toString(str)); // "hello" 출력
System.out.println(Objects.toString(nullStr)); // "null" 출력
}
}
결론
Java의 Objects 클래스는 객체를 다룰 때 유용한 다양한 유틸리티 메서드들을 제공합니다. 이를 통해 코드의 가독성을 높이고, null 체크를 간편하게 할 수 있습니다. 위에서 설명한 주요 메서드들을 활용하여 더 안전하고 효율적인 코드를 작성해보세요.