본문 바로가기
Dev/Java

Java Modern Syntax: Text Blocks

by DevGyu0511 2026. 2. 6.
반응형

Text Block



1. 개요: 텍스트 블록, 왜 혁명인가?

자바 개발자들에게 '여러 줄의 문자열(Multi-line String)'을 다루는 일은 오랫동안 고역이었다. HTML, SQL, JSON 등 구조화된 텍스트를 자바 코드에 넣으려면 이스케이프 문자(\n)와 연결 연산자(+)로 범벅이 된, 소위 '1차원적 문자열'을 만들어야 했기 때문이다. 이는 가독성을 해칠 뿐만 아니라, 수정 시 실수를 유발하는 주원인이었다.

Java 15에서 정식 표준(JEP 378)으로 채택된 텍스트 블록(Text Blocks)은 이 문제를 근본적으로 해결한다. 단순히 입력의 편의성을 넘어, 컴파일러가 '불필요한 공백(Incidental Whitespace)'을 똑똑하게 계산하여 제거해 줌으로써, 개발자가 코드 상에서 보는 들여쓰기 구조를 실제 문자열 데이터에도 그대로 반영할 수 있게 되었다. 이제 자바에서도 '보이는 그대로'의 문자열을 선언할 수 있게 된 것이다.


2. 기본 문법 및 특징

텍스트 블록은 세 개의 큰따옴표(""")로 시작하고 끝난다. 시작 따옴표 바로 뒤에는 반드시 줄바꿈(New Line)이 와야 한다는 규칙이 있다.

Legacy vs Modern 비교

// [기존 방식] 가독성이 떨어지고 수정이 불편함
String oldJson = "{\n" +
                 "  \"name\": \"Gemini\",\n" +
                 "  \"version\": 3\n" +
                 "}";

// [텍스트 블록] 따옴표 이스케이프 불필요, 구조가 한눈에 보임
String newJson = """
                 {
                   "name": "Gemini",
                   "version": 3
                 }
                 """;

가장 큰 특징은 'Incidental Whitespace(부수적 공백) 제거'다. 닫는 따옴표(""")의 위치를 기준으로, 그보다 왼쪽에 있는 공백은 모두 '코드 포맷팅을 위한 공백'으로 간주하여 컴파일러가 자동으로 삭제한다.


3. 안드로이드 개발 실무 활용 예제 3선

① JSON 샘플 데이터 작성 (Unit Test용)

String mockUserResponse = """
    {
        "id": 1004,
        "name": "Gemini-Web",
        "preferences": {
            "theme": "dark",
            "notifications": true
        }
    }
    """;

② SQLite 쿼리 작성 (DB 관리용)

String createTableQuery = """
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        user_name TEXT NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
    """;

③ HTML 코드 작성 (이스케이프 해방)

String htmlTemplate = """
    <html>
        <body>
            <h1 style="color: blue;">Debugging Mode</h1>
            <p>Native-WebView Interop Test Success</p>
        </body>
    </html>
    """;

4. 핵심 메서드 3인방 활용법

① formatted() - 간결한 동적 문자열

String name = "Gyu";
String greeting = """
    Hello, %s!
    Welcome to Modern Java World.
    """.formatted(name);

② stripIndent() - 불필요한 공백 제거

String raw = "    Line 1\\n    Line 2";
String stripped = raw.stripIndent(); 
// 컴파일러가 인식하는 공통 들여쓰기를 자동으로 삭제한다.

③ translateEscapes() - 이스케이프 문자 실제 변환

String rawText = "Data:\\\\tValue\\\\nNextLine";
String result = rawText.translateEscapes();
// 문자열 내에 포함된 이스케이프 시퀀스를 제어 문자로 바꾼다.

Conclusion

자바의 텍스트 블록은 가독성과 유지보수성이라는 두 마리 토끼를 잡는 핵심 문법이다. 특히 안드로이드 개발 시 마주하는 수많은 비정형 데이터를 코드 안에서 가장 깔끔하게 처리할 수 있는 방법이기도 하다.

텍스트 블록과 전용 메서드들을 즉시 적용해 보자.
그동안 복잡하고 가독성 떨어지게 String에 구겨 넣던 것들을,
이제는 놀라울 정도로 간단하고 가독성 좋게 작성할 수 있을 것이다.

반응형

'Dev > Java' 카테고리의 다른 글

Java Modern Syntax: instanceof 패턴 매칭  (0) 2026.02.07
Java Modern Syntax: Sealed Classes  (0) 2026.01.11
Java Modern Syntax : Optional  (0) 2026.01.10
Java Modern Syntax : Lambda in switch  (0) 2026.01.08
Java Modern Syntax : Record  (0) 2026.01.07