Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
2 / 2 / 0
Регистрация: 04.01.2019
Сообщений: 27

Передача неизвестного объекта в метод

10.10.2019, 15:37. Показов 5516. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.
Подскажите, что-то голова поломалась , можно или нет реализовать вот такое:
Есть класс, c перегруженными конструкторами.
Java
1
2
3
4
public class Home {
public Home(Obj1 obj1){//что-то...}
public Home(Obj2 obj2){//что-то...}
}
Т.е. нужна зависимость от типа переданного объекта

Далее, в другом классе есть метод:
Java
1
2
3
4
    public Home strangeMeth(//что тут??? objX ) {
        //...
        return new Home(objX);
    }
Т.е. он должен вернуть объект, созданный в зависимости от типа переданного объекта.

Есть подозрение, что это можно сделать без getClass() и if/switch. Осталось понять, как. Надеюсь на подсказку
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2019, 15:37
Ответы с готовыми решениями:

Передача объекта как аргумент в метод
Метод printClass() предназначен для того, чтобы выводить класс вызвавшего метод объекта и объекта, переданного как аргумент методу. В...

Передача неизвестного объекта в метод класса
Ситуация такова: имеется класс (в зачаточном состоянии) class Archer { private: double penRate; public: Archer(void); ...

Передача функции заранее неизвестного объекта
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и применить к нему функцию-член? ...

5
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
10.10.2019, 15:43
Есть обобщённые типы (дженерики), есть рефлексия и есть гугол
0
2 / 2 / 0
Регистрация: 04.01.2019
Сообщений: 27
10.10.2019, 16:26  [ТС]
Был бы благодарен ссылке на конкретную ссылку решения подобной проблемы, если уж выгоняете с этой площадки и самому отвечать не хочется.
Про то, что существует https://docs.oracle.com, стековерфлоу и гугол, мне уже рассказывали, спасибо.
Мне тут уютно, поэтому и спрашиваю здесь, а не у бездушной машины
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
10.10.2019, 16:48
Вы не просите решение какой-то конкретной проблемы - вы просите научить вас использовать незнакомые вам механизмы языка. Никто не станет этого делать
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.10.2019, 17:05
Цитата Сообщение от KMA7 Посмотреть сообщение
Про то, что существует https://docs.oracle.com, стековерфлоу и гугол, мне уже рассказывали, спасибо.
ну и что мешает поискать там дженерики? https://www.oracle.com/technet... 55374.html
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
10.10.2019, 19:11
Лучший ответ Сообщение было отмечено KMA7 как решение

Решение

Цитата Сообщение от KMA7 Посмотреть сообщение
Т.е. он должен вернуть объект, созданный в зависимости от типа переданного объекта.
Java
1
public Home strangeMeth(//что тут??? objX ) {
В этом случае метод возвратит только тип объекта Home. Ничего другого он не может возвратить.

Пишем дженерик:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 *
  
 * @param <T>
 */
public class GetGen<T>{
    private  T val; 
    
   public GetGen(T arg) { 
        val = arg; 
    } 
    public T getValue() { 
        return val; 
    } 
}
Смотрим как он работает:
Java
1
2
3
4
5
6
7
8
9
public class TestGetGen {
 
    public static void main(String[] args) {
        GetGen<Integer> getGen = new GetGen<>(10);
        GetGen<Double> getGen2 = new GetGen<>(2.1);
        System.out.println("getGen.getValue() =  " + getGen.getValue());
        System.out.println("getGen2.getValue() =  " + getGen2.getValue());
    }
}
run:
getGen.getValue() = 10
getGen2.getValue() = 2.1
BUILD SUCCESSFUL (total time: 2 seconds)
Метод дженерика вернул тот тип, который мы ему передавали в конструкторе.

Добавлено через 1 минуту
Вернее он вернул не тип, а объект того типа, который задавали.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2019, 19:11
Помогаю со студенческими работами здесь

Обобщенный метод. Обращение к полям неизвестного объекта
Добрый вечер! Мне надо изменить значение переменных в объекте неизвестно типа. Что-то типа такого: public void...

Передача объекта в метод
День добрый. Подскажите, пожалуйста: в C# при передачи объекта в метод идет, по факту, передача ссылки на этот объект, т.к. любое...

Передача объекта в метод
void delete_value(string value, list&lt;films&gt; coll) coll передаётся как копия. После удаления из копии данные из списка, который был...

Передача объекта в метод
Объясните пожалуйста,как правильно написать. Есть метод AddMessage() который добавляет сообщение в тему,и есть метод GetMessage() который...

Передача любого объекта в метод
Добрый день. Подскажите, пожалуйста. Есть метод: при изменении состояния checkBox'а изменяется доступность к текстовому полю на форме. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Философия технологии
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(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru