Почему средства проверки в библиотеке предварительных условий Google принимают объект вместо строки

Почему методы check* в библиотеке предварительных условий Google принимают объект вместо строки? Я вижу, что объект называется String.valueOf() на. Я думаю, что этот дизайн был из-за того, что не делал никаких предположений от имени клиента. Но я не могу думать о разумном случае, когда клиент будет вызывать это с чем-то кроме String.

Я предполагаю, что клиенты могут передать объект, который реализовал метод toString(). Но можете ли вы привести пример из реальной жизни о том, как это можно использовать / вы использовали это?

2 ответа

Решение

Почему методы check* в библиотеке предварительных условий Google принимают объект вместо строки?

Спектакль. Если у меня есть объект, который еще не String особенно тот, где toString() это дорогой метод, то:

checkArgument(valid, obj.toString());

безоговорочно позвонит toString() и немедленно откажитесь от результата. С другой стороны:

checkArgument(valid, obj);

может отложить этот вызов. Поскольку ожидается, что проверка пройдет успешно, такая отсрочка позволит избежать потерь.

Это та же самая причина использования форматирования журнала вместо передачи объединенной строки ( преимущества форматирования с помощью {} вместо объединения строк в Logger slf4j).

Согласитесь с Джо и плюс: нулевая обработка.

Смотрите сигнатуру метода: checkArgument(boolean expression, @Nullable Object errorMessage)

Другие вопросы по тегам