W Javie 15 dotarł do nas feature o nazwie Text Block, choć w fazie preview był już od bodaj wersji 13.
Mam dla niego nawet doskonały, praktyczny przykład wprost z mojego kursu Kompletna aplikacja w języku Java – od zera do installera ;). Do tej pory, gdy chcieliśmy sformatować wizualnie np. zapytanie do bazy danych
ResultSet resultSet = statement
.executeQuery("SELECT R.ID, R.ROOM_NUMBER, B.BED FROM ROOMS AS R LEFT JOIN BEDS AS B ON R.ID=B.ROOM_ID");
Kończyliśmy z czyś takim
Statement statement = SystemUtils.connection.createStatement();
ResultSet resultSet = statement.executeQuery("" +
"SELECT " +
"R.ID, " +
"R.ROOM_NUMBER," +
"B.BED " +
"FROM " +
"ROOMS AS R " +
"LEFT JOIN " +
"BEDS AS B " +
"ON" +
" R.ID=B.ROOM_ID");
Używając „bloku tekstu” możemy zapisać to w o wiele przyjemniejszy dla oka sposób:
Statement statement = SystemUtils.connection.createStatement();
ResultSet resultSet = statement.executeQuery("""
SELECT
R.ID,
R.ROOM_NUMBER,
B.BED
FROM
ROOMS AS R
LEFT JOIN
BEDS AS B
ON
R.ID=B.ROOM_ID
""");
Odpada nam więc ciągłe otwieranie ” i używanie plusów do łączenia. Blok tekstu zaczynamy i kończymy potrójnym cudzysłowiem """
Dodatkowo wewnątrz bloku możemy do woli korzystać z „ bez konieczności ciągłego używania \” np.
"""
Przykład "użycia"
"""
Text block jest traktowany jak zwyczajny String, więc możemy spokojnie zastosowań String.format bądź .replace, by wstrzyknąć tam dane.
int id = 2;
String query ="""
SELECT
ID,
ROOM_NUMBER
FROM
ROOM
WHERE
ID = %d
""";
String finalQuery = String.format(query, id);
Dodano nawet specjalną funkcję do klasy String, by ułatwić powyższe
int id = 2;
String finalQuery ="""
SELECT
ID,
ROOM_NUMBER
FROM
ROOM
WHERE
ID = %d
""".formatted(id);
By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.