Почему метод File.exists() Java 25 возвращает true для пустой строки, тогда как File.exists() в предыдущих версиях Java возвращал false? Раньше вызов 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 ... g-while-fi