[공부] 프로그래밍/Spring・Spring Boot (JAVA)
Object 클래스, 제네릭
woodisco
2023. 4. 24. 16:23
Object 클래스
Object 클래스는 모든 JAVA 클래스의 조상 클래스이다.
Object 클래스의 메소드
① toString : 어떠한 객체를 문자화시키는 메서드
② finalize : 객체가 소멸될 때 호출되는 메서드
③ clone : 똑같은 객체를 생성할 수 있는 메서드
class Student implements Cloneable{
String name;
Student(String name) {
this.name = name;
}
public Object clone() throws CloneNotSupportedException() {
return super.clone();
}
}
public class ObjectDemo {
public static void main(String[] args) {
Student s1 = new Student("test");
// 복제를 하기 위해서는 Cloneable을 구현하기
try {
s1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
제네릭
제네릭은 클래스와 메서드를 하나 이상의 유형으로 매개 변수화할 수 있는 Java의 기능이다. 이를 통해 각 유형에 대해 별도의 코드 버전을 생성할 필요 없이 다양한 유형에서 작동할 수 있는 재사용 가능한 코드를 생성할 수 있다.
public class Box<T> {
private T contents;
public Box(T contents) {
this.contents = contents;
}
public T getContents() {
return contents;
}
}
이 예제에서는 모든 유형의 객체를 담을 수 있는 Box라는 클래스를 정의한다. 클래스 정의의 T는 클래스의 인스턴스가 생성될 때 실제 유형으로 대체되는 유형 매개변수이다. contents 필드는 개체를 보유하고 getContents() 메서드는 개체를 반환한다. 다양한 유형의 객체를 보관하기 위해 Box 클래스를 사용하는 방법은 다음과 같다.
Box<String> stringBox = new Box<>("hello");
String contents = stringBox.getContents();
Box<Integer> intBox = new Box<>(42);
int contents = intBox.getContents();
이 예에서는 Box 클래스의 두 인스턴스를 만든다. 하나는 String 개체를 포함하고 다른 하나는 Integer 개체를 포함한다. 인스턴스를 생성할 때 유형 매개변수를 지정한다.(첫 번째는 String, 두 번째는 Integer) 그런 다음 지정된 유형의 객체를 반환하는 getContents() 메서드를 사용하여 각 상자의 내용을 검색할 수 있다. 제네릭은 다양한 형식에서 작동할 수 있는 재사용 가능한 코드를 만드는 강력한 방법을 제공한다. 코드 중복을 줄이고 코드 가독성과 유지 관리성을 향상시키는 데 도움이 된다.