Название вопроса говорит само за себя, но в прошлом запуск File.exists() для пустой строки всегда возвращал false. Однако, когда я обновил JRE, на которой работал мой проект, до Java 25, теперь он внезапно возвращает true. Другими словами, следующий код выводит противоположные значения при запуске в разных версиях JRE:
Код: Выделить всё
public class Main {
public static void main(String[] args) {
File f = new File("");
System.out.println(f.exists());
}
}
Есть способ переписать рассматриваемый код, чтобы не полагаться на получение логического значения при передаче потенциально пустой строки в File.exists(), но мне было интересно, почему определение этого изменится. Глядя на базовый исходный код, я вижу, что реализация этого метода изменилась с прекращением поддержки SecurityManager, но я все равно ожидаю, что новая реализация сохранит те же выходные данные для тех же входных данных.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... while-file