ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20250207
    업무 2025. 2. 8. 16:06


    1. locale

    현재 프로젝트에서는 JDK17 에서 JDK21 버전 업 되었다

    따라서 개발을 하면서 ASIS 소스를 참고하며 개발하니 오류가 발생한 것은 아니었지만 STS에서 노란색으로 경고를 줬다

    "The constructor Locale(String, String) is deprecated since version 19

    add @SuppressWarnings"

     

     

    찾아보니 JDK 19에서부터 java.util.Locale의 생성자가 사용되지 않는다

    ( Locale 클래스는 Java에서 다국어 지원 및 지역 설정을 위한 핵심적인 클래스이다 )
    생성자 대신 정적 팩토리 메서드 사용해야 한다

    Locale locale = Locale.of(language, country, variant);
    Locale koLocale = new Locale.Builder().setLanguage("ko").setRegion("KR").setVariant("POSIX").build();

     

    // ASIS 
    Locale currentLocale = new Locale("KOREAN", "KOREA");
    
    // TOBE
    Locale currentLocale = new Locale.Builder().setLanguage("ko").setRegion("KR").build();

     

     

     

    2. 정적 팩토리 메서드 (Static Factory Method)

    정적 팩토리 메서드는 객체의 생성을 담당하는 클래스 메서드이다
    객체를 인스턴스화할 때 직접적으로 생성자를 호출하는 것이 아니라 별도의 객체 생성의 역할을 하는 클래스 메서드를 통해 간접적으로 객체 생성을 유도하는 것이다


    ex1.

    // 정적 팩토리 메서드
    String str1 = String.valueOf("hello valueOf");
    System.out.println(str1);
    
    String str2 = new String("hello new");
    System.out.println(str2 );



    ex2.

    class Book {
        private String title;
        
        // 생성자를 private화 하여 외부에서 생성자 호출 차단
        private Book(String title) { this.title = title; }
        
        // 정적 팩토리 메서드
        public static Book titleOf(String title) {
            // 메서드에서 생성자를 호출하고 리턴함
            return new Book(title); 
        }
    }
    
    public static void main(String[] args) {
        // 정적 메서드 호출을 통해 인스턴스화된 객체를 얻음
        Book book1 = Book.titleOf("book1"); 
    }

    생성자로 넘기는 매개변수 만으로는 반환될 객체의 특성을 제대로 표현하기가 어렵다

     

    장점

     

    1. 생성 목적에 대한 이름 표현이 가능하다
    > 정적 팩토리 메서드를 구성하고자 한다면, 반드시 생성자에 private 접근 제어자를 두어 외부에서 new 키워드를 이용하여 객체를 생성
    2. 인스턴스에 대해 통제 및 관리가 가능하다
    > getInstance
    3. 하위 자료형 객체를 반환할 수 있다
    4. 인자에 따라 다른 객체를 반환하도록 분기할 수 있다
    5. 객체 생성을 캡슐화할 수 있다

     

     

    정적 팩토리 메서드 네이밍 규칙
    • from : 하나의 매개 변수를 받아서 객체를 생성
    • of : 여러 개의 매개 변수를 받아서 객체를 생성
    • getInstance | instance : 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음
    • newInstance | create : 항상 새로운 인스턴스를 생성
    • get[OrderType] : 다른 타입의 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음
    • new[OrderType] : 항상 다른 타입의 새로운 인스턴스를 생성



     


    출처: 
    https://inpa.tistory.com/entry/GOF-💠-정적-팩토리-메서드-생성자-대신-사용하자
    https://seoulitelab.tistory.com/entry/Java자바-Locale-클래스-다국어-지원과-지역-설정을-위한-핵심-기능
    https://rutgo-letsgo.tistory.com/entry/Deprecated-Features-in-Java-18-thru-21Java-18-21-%EB%B2%84%EC%A0%84%EC%97%90%EC%84%9C-%EB%8D%94-%EC%9D%B4%EC%83%81-%EC%82%AC%EC%9A%A9%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B8%B0%EB%8A%A5-Sip-of-Java











    728x90

    '업무' 카테고리의 다른 글

    Enum, Java Stream API  (1) 2025.01.21
    pull patch 한 번에 뜰 때, commit 오류  (0) 2025.01.13
Designed by Tistory.