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

Что возвращает эта функция?

17.02.2013, 05:20. Показов 950. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Объясните, пожалуйста.. вот код:

Java
1
2
3
4
5
6
7
8
9
    private Product inputProduct() {
        System.out.println("  Input product ->");
        String title = keyboard("    Name");
 
        Product product = new Product();
        product.setTitle(title);
 
        return product;
    }
кусок кода из класса Product:
Java
1
2
3
4
5
           private String title;
 
    public void setTitle(String title) {
        this.title = title;
    }
Не могу понять что возвращает переменная product "return product;".
Зачем там вообще что-то возвращать, если требуется просто считать набранный текст и занести его в переменную title класса Product?? Можно было бы void указать у функции..
Скажите что я не понимаю..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2013, 05:20
Ответы с готовыми решениями:

Что значит эта строчка?
System.out.printf(Locale.US ,"%.8f",((double)((l/k) + 1)*h*1.0)); где l-расстояние от А до В k-отрезок пути h-время,за которое...

Что значит эта строчка?
public void actionPerformed(ActionEvent ae) { try { ExportButActionPerformed(ae); ...

Что возвращает GetHashCode
Привет всем, на лекции спросили, что возвращает не переопределенный для объекта метод GetHashCode. Ответа я правильного не смог дать,...

4
30 / 30 / 13
Регистрация: 07.08.2012
Сообщений: 86
17.02.2013, 07:44
В ООП практикуется подход, что либо метод изменяет вызывающий объект, либо возвращает. Банально здесь вы создаете новый и возвращает. Если void, то и сигнатура метода сменилась бы на
Java
1
void inputProduct(Product product)
к примеру.
1
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
17.02.2013, 07:55
Это зависит от того, как задача ставится.
Если задача считать строку и занести её в title новосозданного объекта Product, то можно смело писать так, как Вы сказали. Но учтите, что новосозданный объект не будет доступным после завершения процедуры, потому что единственная точка доступа к нему — локальная переменная product, которая будет недоступна после завершения функции. Тогда GC удалит этот объект при первом вызове.
Если задача стоит также иметь последующий доступ к объекту, то этот новосозданный объект следует вывести «наружу» функции. Для этого нужно воспользоваться либо выводом через return, либо выводом в глобальную область. Если ещё способ, по-хитрее: вывести в «левый» объект (как у нас, в народе, говорят «третье лицо», понимая, что первые два имеют прямое отношение к делу, а третий — нет; в примере ниже два лица inputProduct и readAndChange будут обмениваться объектом, а третье лицо listener будет играть роль посредника)
Пример:
return
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class Main {
    private Product inputProduct() {
        System.out.println("  Input product ->");
        String title = keyboard("    Name");
        Product product = new Product();
        product.setTitle(title);
        return product;
    }
    private Product readAndChange() {
        Product p = inputProduct();
        /* ... */
    }
}
global
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Main {
    private Product p;
    private void inputProduct() {
        System.out.println("  Input product ->");
        String title = keyboard("    Name");
        Product product = new Product();
        product.setTitle(title);
        p = product;
    }
    private Product readAndChange() {
        inputProduct();
        Product p = this.p;
        /* ... */
    }
}
listener
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Main {
    private static class ProductListener {
        public Product p;
        public void give(Product p) { this.p=p; }
        public Product take() { return this.p; }
    }
    ProductListener listener = new ProductListener();
    private void inputProduct(ProductListener l) {
        System.out.println("  Input product ->");
        String title = keyboard("    Name");
        Product product = new Product();
        product.setTitle(title);
        l.give(product);
    }
    private Product readAndChange() {
        inputProduct(this.listener);
        Product p = listener.take();
        /* ... */
    }
}

P.S. unit7 предложил ещё вариант, когда объект Product не создаётся, но меняется.
1
0 / 0 / 1
Регистрация: 19.02.2012
Сообщений: 83
17.02.2013, 14:23  [ТС]
Спасибо. Кажется всё понял. Буду писать следующую программу - дойду до этого момента - если не пойму, напишу ещё.)
0
17.02.2013, 17:19

Не по теме:

лучше бы книжку открыли и почитали

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2013, 17:19
Помогаю со студенческими работами здесь

Что же все таки возвращает codePointAt?
Здравствуйте! Не могу понять, почему именно такое значение возвращает функция codePointAt. Знал раньше, что есть функция codePointAt (int...

Что значит эта надпись? NetBeans
Вызов Object.notify вне синхронизированного контекста. Если нужно - выложу часть кода.

Что означает эта строка ?
Добрый день, столкнулся с java кодом, нужно его перевести на c# , но не до конца понимаю значение строки : static { code =...

Подскажите что делает эта часть кода
привет! Не могу разобраться что делает этот кусок кода: sb.append(Integer.toString((byteData & 0xff) + 0x100,...

Подскажите начинающему, что означает эта часть кода
Здравствуйте. Учу джаву потихоньку. Делаю задание, и не пойму в этой части кода, что означает int age, и зачем мы присваиваем ей в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru