Верните соответствующий интерфейс, чтобы скрыть детали реализации. Ваши клиенты должны заботиться только о том, что предлагает ваш объект, а не о том, как вы его реализовали. Если вы начинаете с частного ArrayList и позже решаете, что что-то еще (например, LinkedLisk, список пропусков и т. Д.) Более подходит, вы можете изменить реализацию, не затрагивая клиентов, если вы вернете интерфейс. В тот момент, когда вы возвращаете конкретный тип, возможность теряется.
LEN_TRIM возвращает длину указанной строки , игнорируя конечные пробелы . Итак, во втором примере результаты совершенно верны. Что касается первого примера, попробуйте инициализировать пустышку с помощью dummy=' '
, а затем выполните dummy(1)='VALUE'