초기화 블록, 정적 팩토리 메서드
초기화 블록(Initialization block)
클래스 초기화 블록
클래스 변수의 복잡한 초기화에 사용되며 클래스가 처음 로딩될 때 한번만 수행된다.
class A {
static {}
}
인스턴스 초기화 블록
- 인스턴스 변수의 복잡한 초기화에 사용되며 인스터스가 생성될 때마다 수행된다.
- 생성자보다 먼저 수행된다.
class B {
{}
}
정적 팩토리 메서드
정적 팩토리 메서드가 무엇인지 간단히 알아보도록 하겠다.
정적 팩토리 메서드란?
객체 생성의 역할을 하는 클래스 메서드이다.
생성자와 차이는 무엇인가?
이름을 가질 수 있다.
생성자와 다르게 이름을 가질 수 있기 때문에 객체 생성의 목적을 표현할 수 있다.
매번 새로운 객체를 생성할 필요가 없다.
인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다.
하위 자료형 객체를 반환할 수 있다.
// Basic, Intermediate, Advanced는 Level을 상속한다.
public class Level {
public static Level of(int score) {
if (score < 50) {
return new Basic();
} else if (score < 80) {
return new Intermediate();
} else {
return new Advanced();
}
}
}
객체 생성을 캡슐화할 수 있다.
아래와 같이 생성자 내부를 드러내지 않고 다른 객체로 변형할 수 있다.
public class CarDto {
private String name;
private int position;
pulbic static CarDto from(Car car) {
return new CarDto(car.getName(), car.getPosition());
}
}
// Car -> CatDto 로 변환
CarDto carDto = CarDto.from(car);
자료 출처
- https://hashcode.co.kr/questions/654/%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-static-%EB%B8%94%EB%A1%9D%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%9D%98%EB%AF%B8%ED%95%98%EB%82%98%EC%9A%94
- https://tecoble.techcourse.co.kr/post/2020-05-26-static-factory-method/
Author And Source
이 문제에 관하여(초기화 블록, 정적 팩토리 메서드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yshjft/초기화-블록-정적-팩토리-메서드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)