Java
16.7K subscribers
1.25K photos
74 videos
2 files
1.11K links
Самая актуальная информация по Java

По всем вопросам- @haarrp

@itchannels_telegram - 🔥лучшие каналы

@pythonl - 🐍

@ai_machinelearning_big_data- ml

@ArtificialIntelligencedl - AI

@datascienceiot - ds

@pythonlbooks 📚

РКН: clck.ru/3FmwKr

#VRHSZ
Download Telegram
💡 Java: если вам нужно прочитать небольшой файл, используйте Files.readAllLines() — это проще и понятнее.

#JavaTips
🎉11❤1👍1
Java-совет: сравнивайте объекты без риска получить `NullPointerException`

Обычный вызов equals() опасен, если объект слева может быть null:


String a = null;
String b = "hi";

boolean result = a.equals(b); // NullPointerException


Безопаснее использовать Objects.equals():


boolean result = Objects.equals(a, b); // false


Метод корректно обрабатывает все случаи:


Objects.equals(null, null); // true
Objects.equals("hi", "hi"); // true
Objects.equals("hi", null); // false


Это особенно полезно внутри equals() у собственных классов:


@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User user)) return false;

return Objects.equals(id, user.id)
&& Objects.equals(email, user.email);
}


Правило простое: когда хотя бы одна сторона сравнения потенциально может быть null, используйте Objects.equals(a, b).

#Java #JavaTips #Programming
🔥7❤4👍1🎉1
💡 Java совет: два пути могут указывать на один и тот же файл

Path.equals() сравнивает только представление пути:


Path a = Path.of("data.txt");
Path b = Path.of("./data.txt");

System.out.println(a.equals(b)); // false


Хотя оба пути могут вести к одному файлу.

Для проверки используйте:


boolean same = Files.isSameFile(a, b);


Files.isSameFile() обращается к файловой системе и учитывает:

- относительные пути;
- символические ссылки;
- реальное расположение файла.


Path file = Path.of("data.txt");
Path link = Path.of("data-link.txt");

Files.isSameFile(file, link); // true, если link ведёт к data.txt


Полезно при поиске дубликатов, проверке пользовательских путей и защите от повторной обработки одного файла.

Учтите: метод может обращаться к диску и выбрасывать IOException, поэтому это не просто строковое сравнение.

Доступно начиная с Java 7.

#Java #JavaTips #Files
👍4
⚡️Продвинутый Java-совет: используйте `ClassValue`

Если нужно кешировать метаданные отдельно для каждого класса, не обязательно создавать ConcurrentHashMap<Class<?>, Metadata>.


private static final ClassValue<Metadata> CACHE =
new ClassValue<>() {
@Override
protected Metadata computeValue(Class<?> type) {
return scan(type);
}
};

Metadata metadata = CACHE.get(MyClass.class);


ClassValue лениво вычисляет значение, безопасно работает при конкуренции потоков и хранит отдельный результат для каждого Class. Сбросить кеш можно через remove().

Полезно для reflection, сериализации, мапперов и собственных фреймворков.

#Java #JavaTips #Backend
🔥6❤3🎉3👍1