Моя Config4J библиотека (которая является зрелой и хорошо документированной, но не широко известной) предоставляет большую часть того, что вы хотите.
В частности, Config4J обеспечивает безопасный поиск по типу (то есть операции «get») для встроенных типов, таких как string, boolean, int, float и duration (например, "500 milliseconds"
или "2.5 days"
).Строка длительности автоматически преобразуется в целочисленное значение, обозначающее (на ваш выбор) миллисекунды или секунды.
Библиотека также предоставляет строительные блоки, поэтому вы можете выполнять поиск по типу для строк типа "<float> <units>"
(дляНапример, "2 cm"
и "10.5 meters"
для расстояний) или "<units> <float>"
(например, "$0.99"
или "£10.00"
для денег).
В библиотеке также есть тривиальный валидатор схемы (в случае, если вас это интересует).
Способ, которым Config4J не удовлетворяет вашим заявленным требованиям, заключается в том, что функциональность библиотеки «вставлять» (то есть «ставить») работает только в терминах строк.Таким образом, вам придется преобразовать значение типа int / boolean / float / int-denoting-duration / в любое другое значение в строку, а затем «вставить» это значение в объект Config4J.Однако это преобразование в строку обычно не является обременительной задачей.
После вставки некоторых пар имя = значение в объект Config4J вы можете затем вызвать dump()
для сериализации всегоОбъект в строку, которую можно затем записать обратно в файл конфигурации.
Чтение глав 2 и 3 «Руководства по началу работы» ( PDF , HTML )должен дать вам достаточно хороший обзор Config4J, чтобы решить, соответствует ли он вашим потребностям.Возможно, вы также захотите взглянуть на демонстрацию "simple-encapsulation", которая поставляется в загрузке исходного кода ( сжатый tar , zip ).