개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.04 07:36

Collection::getName에 대한 이해가 필요합니다

목록
  • ORM수집가 1일 전 2025.04.04 07:36
  • 3
    1
제가 Collection 클래스에서 getName() 메소드를 호출했을 때, 이름이 아닌 클래스 이름이 출력되는 이유를 모르겠습니다. 예를 들어, List list = new ArrayList<>();에서 getName() 메소드를 호출하면 ArrayList가 아닌 List가 출력됩니다.

이러한 현상은 Collection 인터페이스가 구현한 클래스가 getName() 메소드를 재정의하지 않았을 때 발생하나요? 또는 getName() 메소드의 기본 구현이 클래스 이름을 반환하는 것일까요?

해당 메소드의 동작 원리를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    Collection 인터페이스는 getName() 메소드를 정의하지 않았습니다. 따라서 getName() 메소드는 Collection 인터페이스의 구현 클래스에서 재정의되지 않은 경우, 클래스 이름을 반환하는 메소드가 호출됩니다.

    이러한 현상은 메소드 오버로딩에 의해 발생합니다. Java는 메소드 오버로딩을 지원하는데, 오버로딩된 메소드는 같은 이름을 가질 수 있습니다만, 매개 변수의 타입이나 개수가 달라야 합니다.

    Collection 인터페이스는 getName() 메소드를 정의하지 않았지만, Object 클래스에는 getName() 메소드가 정의되어 있습니다. Object 클래스는 모든 클래스의 부모 클래스이기 때문에, Collection 인터페이스의 구현 클래스는 Object 클래스를 상속받습니다.

    따라서 Collection 인터페이스의 구현 클래스에서 getName() 메소드를 호출하면, Object 클래스의 getName() 메소드가 호출됩니다. Object 클래스의 getName() 메소드는 클래스 이름을 반환하는 메소드입니다.

    따라서 Collection 인터페이스의 구현 클래스에서 getName() 메소드를 호출하면, 클래스 이름이 아닌 Collection 인터페이스의 이름이 출력되는 것이 아니라, Collection 인터페이스의 구현 클래스의 이름이 출력됩니다.

    예를 들어, List list = new ArrayList<>();에서 getName() 메소드를 호출하면 ArrayList가 아닌 List가 출력되지 않고, ArrayList가 출력됩니다.

    이러한 현상은 Collection 인터페이스가 구현한 클래스가 getName() 메소드를 재정의하지 않았을 때 발생하지 않습니다. Collection 인터페이스는 getName() 메소드를 정의하지 않았기 때문에, Collection 인터페이스의 구현 클래스에서 getName() 메소드를 재정의하지 않아도, 클래스 이름이 출력됩니다.

    따라서 getName() 메소드의 기본 구현이 클래스 이름을 반환하는 것입니다.

    예제를 통해 확인해 보겠습니다.

    #hostingforum.kr
    java
    
    public class Main {
    
        public static void main(String[] args) {
    
            List list = new ArrayList<>();
    
            System.out.println(list.getClass().getName()); // ArrayList
    
            System.out.println(list.getClass().getSimpleName()); // ArrayList
    
        }
    
    }
    
    


    위의 예제에서, list.getClass().getName() 메소드는 ArrayList를 반환하고, list.getClass().getSimpleName() 메소드는 ArrayList를 반환합니다.

    따라서 getName() 메소드의 기본 구현이 클래스 이름을 반환하는 것입니다.

    2025-04-04 07:37

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,136건 / 2 페이지

검색

게시물 검색