Получение по запросу значений из файла Свойств Java в порядке?

В то время как я действительно соглашаюсь, что.NET, вероятно, изолирует слишком много, она должна обычно защищать целостность экосистемы. Когда один из Ваших высших приоритетов должен сохранить стабильность Вашей полной платформы/API/времени выполнения, и существуют несколько хрупкие взаимозависимости между классами, может быть самым безопасным препятствовать тому, чтобы люди переопределили то поведение и непреднамеренно дестабилизировали базовую функциональность.

, Хотя снова, я действительно склонен чувствовать, что команда.NET изолирует слишком много классов. Изоляция может иногда быть простой ленью со стороны разработчика, потому что надлежащий дизайн класса был бы слишком большой работой.

31
задан Ahmed Ashour 10 April 2018 в 08:50
поделиться

5 ответов

Если вы можете изменить имена свойств, вы можете префикс их числовым или другим сортируемым префиксом, а затем отсортировать набор ключей свойств.

6
ответ дан 27 November 2019 в 21:26
поделиться

Нет - карты по своей природе "неупорядочены".

Вы можете , возможно, создать свой собственный подкласс Properties , который перекрывает ] setProperty и, возможно, put , но это, вероятно, будет очень зависящим от реализации ... Свойства - яркий пример плохой инкапсуляции. Когда я в последний раз писал расширенную версию (около 10 лет назад!), Она оказалась отвратительной и определенно чувствительной к деталям реализации Properties .

Свойства - яркий пример плохой инкапсуляции. Когда я в последний раз писал расширенную версию (около 10 лет назад!), Она оказалась отвратительной и определенно чувствительной к деталям реализации Properties .

Свойства - яркий пример плохой инкапсуляции. Когда я в последний раз писал расширенную версию (около 10 лет назад!), Она оказалась отвратительной и определенно чувствительной к деталям реализации Properties .

11
ответ дан 27 November 2019 в 21:26
поделиться

Конфигурация Apache Commons может помочь вам. Я не тестировал это сам, но я проверил их источники и похоже, что ключи свойств поддерживаются LinkedList в классе AbstractFileConfiguration:

public Iterator getKeys()
{
    reload();
    List keyList = new LinkedList();
    enterNoReload();
    try
    {
        for (Iterator it = super.getKeys(); it.hasNext();)
        {
            keyList.add(it.next());
        }

        return keyList.iterator();
    }
    finally
    {
        exitNoReload();
    }
}
4
ответ дан 27 November 2019 в 21:26
поделиться

Расширить java.util.Properties , переопределить оба ключа put () и () :

import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.HashMap;

public class LinkedProperties extends Properties {
    private final HashSet<Object> keys = new LinkedHashSet<Object>();

    public LinkedProperties() {
    }

    public Iterable<Object> orderedKeys() {
        return Collections.list(keys());
    }

    public Enumeration<Object> keys() {
        return Collections.<Object>enumeration(keys);
    }

    public Object put(Object key, Object value) {
        keys.add(key);
        return super.put(key, value);
    }
}
66
ответ дан 27 November 2019 в 21:26
поделиться

Вы должны переопределить также keySet(), если хотите экспортировать свойства как XML:

public Set keySet() { return keys; }

2
ответ дан 27 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: