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

Приведение типов

11.03.2019, 19:45. Показов 2020. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане!
Не могу решить данную проблему, возможно вы мне поможете в этом вопросе.

Есть абстрактный метод Car. От него наследуются абстрактные классы Zhiguli и Gaz. И уже Zhiguli наследуется класс Vaz2106 и Vaz2107, а от Gaz -- > Gaz3110 и Gazel.

Есть интерфейс EVRO4 (с единственным абстрактным методом getdataofevro4; ) который реализовали только Vaz2107 и Gazel.
Метод getdataofevro4(); возвращает строку стринг и всё.

Теперь в Main если создать массив Arr[] где много-много этих машинок, и мне нужно каждый объект проверить на instanceof "класс объекта".
Вот как это выглядит у меня


Java
1
2
3
4
5
6
7
8
9
 for (int i = 0; i < Arr.length; i++) {
            if ((Arr[i] instanceof EVRO4)&&(Arr[i] instanceof Vaz2107)) {
                System.out.println(((Vaz2107) Arr[i]).getdataofevro4());
            }
            else if ((Arr[i] instanceof EVRO4)&&(Arr[i] instanceof Gazel)){
                System.out.println(((Gazel) Arr[i]).getdataofevro4());
                
            }
        }
Код работает и все хорошо, но как я могу избавиться от дополнительной проверки к какому классу принадлежит объект? (вдруг у меня этих классов будет 400, тогда цепочка if -ов затянется ого-го).
Как сделать чтобы здесь ((Vaz2107) Arr[i]).getdataofevro4() я мог всё привести к типу Car. При всех моих попытках java выдает что метод getdataofevro4() не реализован в классе Car.
Прошу помочь если кто-то знает! Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2019, 19:45
Ответы с готовыми решениями:

Приведение типов сырых типов
class Gen&lt;T&gt; { T ob Gen(T o) { ob=o; } T getob(){ return ob; } public class RawDemo {

приведение типов
Добрый день. Объясните, пожалуйста, поподробнее, кусочек кода. Я знаю, что это приведение типов...а что к чему приводится то?...

Приведение типов
Добрый вечер уважаемые форумчане, подскажите, как вместо true и false сделать 1 и 0. boolean p, q; ...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.03.2019, 21:15
Цитата Сообщение от idchrom Посмотреть сообщение
&&(Arr[i] instanceof Vaz2107)
а вот это зачем?

Добавлено через 24 секунды

Не по теме:

Цитата Сообщение от idchrom Посмотреть сообщение
абстрактный метод Car
Цитата Сообщение от idchrom Посмотреть сообщение
От него наследуются абстрактные классы Zhiguli и Gaz
метод, карл



Добавлено через 1 минуту
Цитата Сообщение от idchrom Посмотреть сообщение
EVRO4
не по конвенции

Добавлено через 21 секунду
Цитата Сообщение от idchrom Посмотреть сообщение
Arr[i]
и тут
0
2 / 2 / 1
Регистрация: 26.09.2015
Сообщений: 76
11.03.2019, 21:36  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
метод, карл
Да я ошибся


Цитата Сообщение от xoraxax Посмотреть сообщение
а вот это зачем?
иначе как я узнаю к какому классу принадлежит объект и вызову эту функцию?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.03.2019, 21:38
Лучший ответ Сообщение было отмечено idchrom как решение

Решение

кастуй в EVRO4
1
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
11.03.2019, 21:43
Лучший ответ Сообщение было отмечено idchrom как решение

Решение

Может так?

Java
1
2
3
4
5
 for (int i = 0; i < Arr.length; i++) {
            if (Arr[i] instanceof EVRO4) {
                System.out.println(((EVRO4) Arr[i]).getdataofevro4());
            }
        }
1
2 / 2 / 1
Регистрация: 26.09.2015
Сообщений: 76
11.03.2019, 21:46  [ТС]
Спасибо Вам огромное! 2 дня не мог понять как это можно сделать!


Цитата Сообщение от xoraxax Посмотреть сообщение
не по конвенции
еще скажите пожалуйста я правильно понял что классы лучше не называть большими буквами?


Цитата Сообщение от xoraxax Посмотреть сообщение
и тут
и тут еще можете сказать что с Arr[i] не так?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.03.2019, 21:54
idchrom, https://www.lar.ru/java-codestyle/
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2019, 21:54
Помогаю со студенческими работами здесь

Приведение типов
вот почему. ну почему. так можно short s3 = 10+11; а вот так нельзя? short s1 = 10; short s2 = 11; short s4 = s1 + s2;...

Приведение типов
Борюсь с java чуть меньше недели, и тут понадобилось сделать на ней небольшую задачку(типа олимпиадной). После того как все было сделано...

Приведение типов
Начался копаться в потрохаx библиотеки(1.8.60) и наткнулся на странный момент, в классе Byte есть некий статический метод: /** *...

Приведение типов
Объясните пожалуйста суть следующих строк кода: char x,y; x=(char)+y; x=(char)-y; x=(char)~y; Заранее спасибо!

Приведение типов
Всем привет! Изучаю онлайн курсы на одном сайте. В практической части столкнулся со следующим заданием: Найдите и исправьте ошибки. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru