ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Object 클래스, 제네릭
    [공부] 프로그래밍/Spring・Spring Boot (JAVA) 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() 메서드를 사용하여 각 상자의 내용을 검색할 수 있다. 제네릭은 다양한 형식에서 작동할 수 있는 재사용 가능한 코드를 만드는 강력한 방법을 제공한다. 코드 중복을 줄이고 코드 가독성과 유지 관리성을 향상시키는 데 도움이 된다.

     

    '[공부] 프로그래밍 > Spring・Spring Boot (JAVA)' 카테고리의 다른 글

    iterator, Map  (0) 2023.04.27
    Collections framework  (0) 2023.04.27
    @RestController, produces, subscribeOn  (0) 2023.04.19
    Flux, @Tailable  (0) 2023.04.14
    @PathVariable  (0) 2023.04.12
Designed by Tistory.