0 / 0 / 1
Регистрация: 19.02.2012
Сообщений: 83

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

17.02.2013, 05:20. Показов 963. Ответов 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 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru