Игнорировать значение свойства (Hashtable) со значением NULL - PullRequest
0 голосов
/ 01 июля 2018

У меня есть метод, который принимает java.util.Properties параметр,

Мне нужно указать различные параметры, чтобы его значение могло быть нулевым.

Я получаю NullPointerException из-за Hashtable.put не может получить нулевое значение

java.lang.NullPointerException
        at java.util.Hashtable.put(Hashtable.java:460)
        ...

Я могу исправить это, используя метод проверки нулей:

private void putIfNotNull(Properties p, String name, String value) {
    if (value!= null) {
        p.put(name, value);
    }
}

Или создайте класс-оболочку и используйте его:

public class PropertyHolder extends Properties {
 @Override
    public Object put( Object key, Object value ) {
    if (value != null) {
        return super.put(key, value);           
    }
    return null;
}

и используйте его как Свойство:

Properties p = new PropertyHolder();

Является ли второй вариант правильным? или есть более простое / встроенное решение?

1 Ответ

0 голосов
/ 01 июля 2018

Метод putIfNotNull является лучшим вариантом, поскольку он явно дает понять, что он не будет помещать значение, если оно равно нулю. Создание подкласса Properties, который молча отвергает нулевые значения в методе put, означает нарушение ожидаемого поведения Maps - если put("key", value) возвращается без выдачи исключения, тогда get ("key") должен вернуть то же самое value .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...