자바 정적 내부 클래스 와 Builder 모드

1. 개념
자바 에 서 는 클래스 내부 에서 정적 내부 클래스 를 정의 할 수 있 습 니 다.다 중 매개 변수 대상 을 구축 하고 클래스 의 일치 성 을 확보 할 수 있 습 니 다.
2. 비정 상 내부 와 의 차이
정적 내부 클래스 와 비 정적 내부 클래스 의 차 이 는 다음 과 같다.
4. 567917. 비 정적 내부 클래스 에서 정적 구성원 을 설명 할 수 없습니다.정적 내부 클래스 만 정적 인 구성원 변수 와 구성원 방법 을 정의 할 수 있 습 니 다
4. 567917. 비정 상 내부 류 는 외부 류 의 구성원 변수 와 구성원 방법 을 임의로 방문 할 수 있 습 니 다.정적 내부 클래스 는 외부 클래스 의 정적 구성원 (변수 나 방법) 만 참조 할 수 있 을 뿐 비 정적 변 수 는 접근 할 수 없습니다
4. 567917. 내부 클래스 의 인 스 턴 스 는 반드시 외부 클래스 의 인 스 턴 스 에 연결 해 야 합 니 다.즉, 내부 클래스 를 만 들 기 전에 외부 클래스 에서 new 키 워드 를 이용 하여 이 내부 클래스 의 대상 을 만들어 야 한 다 는 것 이다.정적 내부 클래스 를 정의 할 때 외부 클래스 에 연 결 된 인 스 턴 스 를 정의 할 필요 가 없습니다.즉, 외부 클래스 에서 정적 인 내부 클래스 를 정의 하려 면 키워드 new 를 이용 하여 내부 클래스 의 인 스 턴 스 를 만 들 필요 가 없습니다
3. Builder 모드 에서 원본 코드 초기 화
// Telescoping constructor pattern - does not scale well! - Pages 11-12

public class NutritionFacts {
    private final int servingSize;   // (mL)            required
    private final int servings;      // (per container) required
    private final int calories;      //                 optional
    private final int fat;           // (g)             optional
    private final int sodium;        // (mg)            optional
    private final int carbohydrate;  // (g)             optional

    public NutritionFacts(int servingSize, int servings) {
        this(servingSize, servings, 0);
    }

    public NutritionFacts(int servingSize, int servings,
            int calories) {
        this(servingSize, servings, calories, 0);
    }

    public NutritionFacts(int servingSize, int servings,
            int calories, int fat) {
        this(servingSize, servings, calories, fat, 0);
    }

    public NutritionFacts(int servingSize, int servings,
            int calories, int fat, int sodium) {
        this(servingSize, servings, calories, fat, sodium, 0);
    }

    public NutritionFacts(int servingSize, int servings,
           int calories, int fat, int sodium, int carbohydrate) {
        this.servingSize  = servingSize;
        this.servings     = servings;
        this.calories     = calories;
        this.fat          = fat;
        this.sodium       = sodium;
        this.carbohydrate = carbohydrate;
    }

    public static void main(String[] args) {
        NutritionFacts cocaCola =
            new NutritionFacts(240, 8, 100, 0, 35, 27);
    }
}

좋은 웹페이지 즐겨찾기