Я пытаюсь понять, почему java.util.Properties был реализован таким образом. Он имеет два интерфейса: getProperty/setProperty, который принимает только строки, а put/get принимает любой объект в качестве значения. Эти два интерфейса кажутся перекрывающимися, поэтому строка, добавленная с помощью put(), может быть получена с помощью getProperty().
Кажется, что есть некоторые проблемы с этим странным гибридным интерфейсом. Помещение объекта, который переопределяет свойство строки, имеет побочный эффект очистки строкового значения, создавая нуль как результат getProperty. Добавление целого числа или какого-либо другого значения, которое имеет простой перевод строк, может быть неправильно истолковано как значение реального свойства (но как свойство оно всегда равно нулю).
Мой вопрос: есть ли для этого реальная, практическая причина? Как я подозреваю, это полупродуманная реализация?