Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 23.11.2020
Сообщений: 68

Возврат null как результат работы метода

09.01.2022, 12:07. Показов 883. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть метод, который выполняет поиск объекта в коллекции по заданному id. В случае, если такого элемента нет, нужно завершить работу метода, ничего не возвращая. null возвращать крайне не хочется, пустой объект тем более, поскольку результат этого поиска добавляется в другую коллекцию.

Как обычно поступают в таких ситуациях?

Java
1
2
3
4
5
6
7
8
9
10
11
12
     public Good searchGood(Integer goodId) {
          try {
               for (int i = 0; i < this.goods.size(); i++) {
                    if (this.goods.get(i).getId() == goodId) {
                         return this.goods.get(i);
                    }
               }
          } catch (NullPointerException e) {
               
          }
          return null; /////
     }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.01.2022, 12:07
Ответы с готовыми решениями:

Возврат responseText из XMLHttpRequest aka AJAX как результат работы функции
Вот как бы обычный Ajax запрос, на чистом JS. function ajax() { var xhr = new XMLHttpRequest(); ...

Как сделать возврат в начало метода?
Как сделать возврат в начало метода?

Написать http сервер, который будет отправлять результат выполнения метода работы с некоторыми данными
Нужно написать http сервер, который будет отправлять результат выполнения метода работы с некоторыми данными. Запрос должен отправлять...

4
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
09.01.2022, 13:17
asdasd_mjeesh,

вариант 1: public Option<Good> searchGood(…) …
вариант 2: throw new GoodNotFound();
2
95 / 66 / 30
Регистрация: 22.11.2019
Сообщений: 246
09.01.2022, 14:38
сейчас вы вызываете метод searchGood и его результат добавляете в коллекцию.
а вы можете сделать еще одни метод, например, addGood, который дергает метод searchGood .
addGood получает ответ, проверяет его на null. и если ответ !=null - добавляет его в коллекцию.
1
1 / 1 / 0
Регистрация: 23.11.2020
Сообщений: 68
09.01.2022, 15:13  [ТС]
XaXoLOL, проверку можно сделать непосредственно перед добавлением элемента в коллекцию, без создания дополнительных методов. Говорят, что методы, возвращающие null -- это плохое решение, и нужно выдавать исключение в подобных ситуациях, вместо подобных проверок.


korvin_, спасибо, можно ли где-то посмотреть примеры? Не удается найти что-то похожее в гугле, везде возвращаемое значение void...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
09.01.2022, 16:46
Лучший ответ Сообщение было отмечено asdasd_mjeesh как решение

Решение

asdasd_mjeesh, как-то так:
Java
1
2
3
public Optional<Good> searchGood(Integer goodId) {
  return this.goods.stream().filter(x -> Objects.equals(x.getId(), goodId)).findFirst();
}
Добавлено через 2 минуты
Цитата Сообщение от asdasd_mjeesh Посмотреть сообщение
В случае, если такого элемента нет, нужно завершить работу метода, ничего не возвращая. null возвращать крайне не хочется, пустой объект тем более, поскольку результат этого поиска добавляется в другую коллекцию.
Java
1
searchGood(1_337).ifPresent(anotherCollection::add)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2022, 16:46
Помогаю со студенческими работами здесь

Многопоточность (завершение работы одного метода при завершении работы другого метода)
Нужна помощь! Как запустить метод во время выполнения другого метода (ну про потоки я кое-чего знаю, так что тут проблем нет), но потом...

Возврат значения - null в OpenShift
Приветствуют, есть приложение с формой регистрации. На локальном хосте (TomCat 8.0.28) регистрация работает нормально. Но когда заливаю на...

Результат метода прогонки не совпадает с результатом метода Эйлера
Всем добрый вечер! Помогите пожалуйста привести программу написанной по методу Эйлера на метод прогонка. Я написал программу на Delphi...

Что вернуть, если некоторые ругают за возврат null?
class Registry { public static $array = ; public static function set($key, $value) { self::$array =...

Нужен результат метода CSS как число
margin = $(&quot;#moveGal&quot;).css('left'); Нужно к этому выражению добавить число например 200. Тоесть надо получить резуьтат свойства css как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru