Создание практического приложения
Теперь, когда мы рассмотрели различные методы обработки null-значений при конкатенации строк, давайте применим полученные знания для создания небольшого практического приложения. Это поможет закрепить наше понимание и покажет, как использовать эти методы в реальном сценарии.
Создание форматировщика профиля пользователя
На этом этапе мы создадим программу, которая форматирует информацию профиля пользователя, обрабатывая потенциальные null-значения в различных полях.
-
Создайте новый Java-файл с именем UserProfileFormatter.java
в каталоге /home/labex/project
.
-
Добавьте следующий код в файл:
import java.util.StringJoiner;
import java.util.Objects;
public class UserProfileFormatter {
public static void main(String[] args) {
// Полный пользователь со всеми полями
formatUserProfile("John", "Doe", "[email protected]", "Software Developer", "New York");
// Пользователь с некоторыми null-полями
formatUserProfile("Alice", "Smith", null, "Data Scientist", null);
// Пользователь только с именем
formatUserProfile("Bob", "Johnson", null, null, null);
// Пользователь с минимальной информацией
formatUserProfile(null, "Williams", "[email protected]", null, null);
// Давайте используем наш вспомогательный метод
User user1 = new User("Sarah", "Connor", "[email protected]", "Freedom Fighter", "Los Angeles");
System.out.println("\nFormatted user1 profile:");
System.out.println(formatUserInfo(user1));
User user2 = new User("James", null, null, "Student", "Boston");
System.out.println("\nFormatted user2 profile:");
System.out.println(formatUserInfo(user2));
}
public static void formatUserProfile(String firstName, String lastName,
String email, String occupation, String city) {
System.out.println("\n------ User Profile ------");
// Форматирование полного имени с использованием StringJoiner
StringJoiner nameJoiner = new StringJoiner(" ");
if (firstName != null) nameJoiner.add(firstName);
if (lastName != null) nameJoiner.add(lastName);
String fullName = nameJoiner.toString();
System.out.println("Name: " + (fullName.isEmpty() ? "Not provided" : fullName));
// Email с проверкой на null с использованием тернарного оператора
System.out.println("Email: " + (email != null ? email : "Not provided"));
// Occupation с Objects.toString()
System.out.println("Occupation: " + Objects.toString(occupation, "Not provided"));
// City с проверкой на null с использованием if-else
String cityInfo;
if (city != null) {
cityInfo = city;
} else {
cityInfo = "Not provided";
}
System.out.println("City: " + cityInfo);
System.out.println("---------------------------");
}
// Более комплексный вспомогательный метод для форматирования информации о пользователе
public static String formatUserInfo(User user) {
if (user == null) {
return "No user information available";
}
StringBuilder builder = new StringBuilder();
builder.append("------ User Profile ------\n");
// Обработка имени
StringJoiner nameJoiner = new StringJoiner(" ");
if (user.getFirstName() != null) nameJoiner.add(user.getFirstName());
if (user.getLastName() != null) nameJoiner.add(user.getLastName());
String fullName = nameJoiner.toString();
builder.append("Name: ").append(fullName.isEmpty() ? "Not provided" : fullName).append("\n");
// Обработка email
builder.append("Email: ").append(user.getEmail() != null ? user.getEmail() : "Not provided").append("\n");
// Обработка occupation
builder.append("Occupation: ").append(Objects.toString(user.getOccupation(), "Not provided")).append("\n");
// Обработка city
builder.append("City: ").append(Objects.toString(user.getCity(), "Not provided")).append("\n");
builder.append("---------------------------");
return builder.toString();
}
// Класс User для представления пользователя
static class User {
private final String firstName;
private final String lastName;
private final String email;
private final String occupation;
private final String city;
public User(String firstName, String lastName, String email, String occupation, String city) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.occupation = occupation;
this.city = city;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getEmail() { return email; }
public String getOccupation() { return occupation; }
public String getCity() { return city; }
}
}
-
Сохраните файл, нажав Ctrl+S или выбрав File > Save в меню.
-
Скомпилируйте и запустите Java-программу:
cd ~/project
javac UserProfileFormatter.java
java UserProfileFormatter
Вы должны увидеть вывод, аналогичный следующему:
------ User Profile ------
Name: John Doe
Email: [email protected]
Occupation: Software Developer
City: New York
---------------------------
------ User Profile ------
Name: Alice Smith
Email: Not provided
Occupation: Data Scientist
City: Not provided
---------------------------
------ User Profile ------
Name: Bob Johnson
Email: Not provided
Occupation: Not provided
City: Not provided
---------------------------
------ User Profile ------
Name: Williams
Email: [email protected]
Occupation: Not provided
City: Not provided
---------------------------
Formatted user1 profile:
------ User Profile ------
Name: Sarah Connor
Email: [email protected]
Occupation: Freedom Fighter
City: Los Angeles
---------------------------
Formatted user2 profile:
------ User Profile ------
Name: James
Email: Not provided
Occupation: Student
City: Boston
---------------------------
Понимание форматировщика профиля пользователя
В этом примере мы создали реальное приложение, которое форматирует информацию профиля пользователя, которая часто содержит null или отсутствующие значения. Давайте разберем, что происходит:
-
Мы использовали различные методы обработки null в методе formatUserProfile
:
- StringJoiner для объединения частей имени
- Тернарный оператор для email
- Objects.toString() для occupation
- Оператор if-else для city
-
Мы создали более комплексный метод formatUserInfo
, который принимает объект User и обрабатывает потенциальные null во всех полях.
-
Класс User демонстрирует распространенный сценарий, когда данные могут отсутствовать для некоторых полей.
Этот практический пример показывает, как методы, которые мы изучили, могут быть применены к реальным сценариям. Код надежен и корректно обрабатывает null-значения, предоставляя текст по умолчанию ("Not provided"), когда информация отсутствует.