как не разрешить пустой ключ в Guava Multimap? - PullRequest
0 голосов
/ 14 января 2020

У меня такая ситуация, когда у меня есть мультикарта, которую я добавляю в конце к Oracle БД, которая преобразует пустую строку ("") в ноль, есть ли способ, который я могу гарантировать в коде, что мультикарта не позволит добавить пустой ключ? (например, Multimap.put ("", "некоторое значение"))

Спасибо.

1 Ответ

0 голосов
/ 14 января 2020

Ключи и значения MultiMap в Guava имеют значение @Nullable, и он не имеет встроенной функциональности для добавления проверки. Поэтому я бы просто создал проверку в коде, который помещает значения. Что-то вроде:

if (!key.isEmpty){
    multiMap.put(key, value);
} else {
    log("Could not add " +value) // or throw an exception or do something else
}

Обновлено: после того, как OP уточнил, что вышеприведенное не относится к его случаю использования, потому что синтаксический анализ выполняется через Spring.

Вы можете использовать ForwardingMultiMap :

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

https://guava.dev/releases/23.0/api/docs/com/google/common/collect/ForwardingMultimap.html

Я никогда не использовал этот класс сам, но, похоже, вы можете использовать его для пересылки в подкласс вашего собственного дизайна. Затем в этом подклассе вы можете встроить проверку в метод put.

...