Очевидный ответ на этот вопрос - «это то, что говорит JLS».
Подумав, почему это так, подумайте, что такое поведение может быть полезно в определенных случаях. Допустим, вы хотите проверить строку по набору других строк, но число других строк может варьироваться.
Итак, у вас есть что-то вроде этого:
for(String s : myStrings) {
check(aString.contains(s));
}
, где некоторые s
являются пустыми строками.
Если пустая строка интерпретируется как «нет ввода», и если ваша цель здесь состоит в том, чтобы убедиться, что aString
содержит все «входы» в myStrings
, то ввод в заблуждение пустой строки для false
, Все строки содержат это, потому что это ничто. Сказать, что они не содержали это, означало бы, что в пустой строке было какое-то вещество, которое не было зафиксировано в строке, что неверно.