2장. 객체 생성과 파괴
새로운 객체 생성
생성자 대신
static method는 유연성을 줌 → 바깥 인스턴스에 접근할 일이 없다면 무조건static을 붙여서 정적 멤버 클래스로생성자에
매개변수가 많다면 빌더이용싱글턴보장 & 재활용 : 최초 한 번만 메모리를 할당(static) → 생성자가 private으로 객체 1개 재사용private 생성자로 인스턴스화 막을 수 있음
의존 객체 주입 사용 → util 클래스(static으로만 구성) 구현을 여러 가지로 사용
→ 팩토리 메서드로 주는게 좋음
완료된 객체 참조는 해체 (≠ null)
예외가 발생하면 제대로 종료하기 위해
try-with-resources사용 → 암묵적으로 자원 반납(자바의 객체 소멸자인 finalizer, cleaner : 예측x, 위험, 불필요)
종료할 자원 담는 객체 클래스에서
AutoCloseable구현 후, 다 쓰고 close 메서드 호출public class SampleResource implements AutoCloseable { @Override public void close() throws RuntimeException { System.out.println("close"); } public void hello() { System.out.println("hello"); } } public class SampleRunner { public static void main(String[] args) { try (SampleResource resource = new SampleResource()) { resource.hello(); // 리소스 사용 } // try 블록이 끝날 때, close를 호출 } }
- 추가
- 인스턴스화 막는 이유 : 정적 필드와 정적 메소드만으로 구성된 클래스를 만드는 경우 → 객체마다 같은 속성값을 가짐
- 함수형 인터페이스 : “1개” 추상 메소드 가짐 (@FunctionalInterface 검증용)
참조
'Spring > Java' 카테고리의 다른 글
| [JAVA] 프로그램 (0) | 2023.03.10 |
|---|---|
| [JAVA] 프로그래밍 언어, java (0) | 2023.03.10 |
