kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향 프로그래밍
  • 응집도
  • 설계 원칙
  • 결합도
  • 책임
  • 역할

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

Book/Effective Java

[Item 25] 톱레벨 클래스는 한 파일에 하나만 담으라

2022. 8. 5. 18:47

소스를 작성하는 파일 내에 하나만 존재하는 클래스를 톱레벨 클래스라고 한다.

소스 파일 하난에 여러개의 톱레벨 클래스가 있다면 문제가 있다.

문제

Product.java

class Product {
    static final StringNAME= "phone";
}

class Company {
    static final StringNAME= "samsung";
}

Company.java

public class Company {
    static final StringNAME= "samsung";
}

class Product {
    static final StringNAME= "phone";
}

위의 소스코드는 컴파일 에러에서 중복된 클래스라 에러가 발생할 것이다.

컴파일러에게 어느 소스파일을 먼저 읽게 하냐 에 따라 정상 동작할 수 도 있고 또는 컴파일 에러가 발생할 수도 있다.

이러한 문제점을 해결하기위한 방법은 서로 다른 소스 파일로 분리 해야한다.

정적 멤버 클래스로 변경

public class Main {
    public static void main(String[] args) {
        System.out.println(Company.NAME+ Product.NAME);
    }

    static class Company {
        static final StringNAME= "samsung";
    }

    static class Product {
        static final StringNAME= "phone";
    }
}

'Book > Effective Java' 카테고리의 다른 글

[Item 29] 이왕이면 제네릭 타입으로 만들라  (0) 2022.08.18
[Item 28] 배열보다는 리스트를 사용하라  (0) 2022.08.18
[Item 27] 비검사 경고를 제거하라  (0) 2022.08.06
[Item 26] 로 타입(Raw Type)은 사용하지 말라  (0) 2022.08.05
[Item 24] 멤버 클래스는 되도록 static 으로 만들라  (0) 2022.07.27
[Item 23] 태그 달린 클래스보다 클래스 계층구조를 활용하라  (0) 2022.07.27
[Item 22] 인터페이스는 타입을 정의하는 용도로만 사용하라  (0) 2022.07.26
[Item 21] 인터페이스는 구현하는 쪽을 생각해 설계해라  (0) 2022.07.26
    'Book/Effective Java' 카테고리의 다른 글
    • [Item 27] 비검사 경고를 제거하라
    • [Item 26] 로 타입(Raw Type)은 사용하지 말라
    • [Item 24] 멤버 클래스는 되도록 static 으로 만들라
    • [Item 23] 태그 달린 클래스보다 클래스 계층구조를 활용하라
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바