|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||||||
Проблема с дженериками (The method is not applicable for the arguments)03.07.2019, 01:50. Показов 8638. Ответов 16
Здравствуйте! Столкнулся с никак не разрешимой проблемой (почти никак), связанной с использованием дженериков.
Есть два интерфейса - Region и Visualization: 1. Region имеет параметр R, который используется в некоторых методах, не перечисленные здесь. 2. У интерфейса Visualization есть метод visualize, которые выполняет некоторые действия используя заданный регион. Параметр интерфейса R задает конкретный класс региона, для которого предназначена эта визуализация. Есть некоторый код, который получил из менеджеров неизвестный регион и визуализацию, при этом известно, что регион точно подходит для этой визуализации. Задача выполнить метод visualize у экземпляра неизвестного класса Visualization<?>, передав в его параметры Region<?>, также с неизвестной реализацией. Очень надеюсь на вашу помощь. Единственное что я смог придумать - обрезать дженерики в вызывающем коде, чтобы были просто Region и Visualization, и получить просто два предупреждения - unchecked и rawtypes. Однако мне принципиально чтобы rawtypes не было (чистота кода все дела).
0
|
||||||
| 03.07.2019, 01:50 | |
|
Ответы с готовыми решениями:
16
ОшибкаThe method convertTemp(int, char) in the type TemperatureConverter is not applicable for the arguments
Undefined function or method ' ' for input arguments of type 'double' |
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
|||||||
| 03.07.2019, 03:43 [ТС] | |||||||
0
|
|||||||
|
|
|
| 03.07.2019, 03:54 | |
|
lignium, прост ты при объявлении Region указываешь, что в качестве дженерика он принимает классы, которые уже реализуют Region. Мне чёт это не понятно
Добавлено через 3 минуты Не по теме: И мне чёт кажется, что ты не совсем ясно понимаешь значения слов, которые используешь
0
|
|
| 03.07.2019, 04:01 [ТС] | |
|
0
|
|
|
|
|
| 03.07.2019, 04:06 | |
|
lignium, та неважн, ты лучше поясни каким образом эт вообще должно работать. Ты пишешь, что CuboidRegion implements Region<CuboidRegion>, но эт не подходит под интерфейс Region, ибо он требует, чтобы реализующий класс уже имплементировал Region
Добавлено через 1 минуту Что мешает сделать дженерик Region просто R
0
|
|
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||
| 03.07.2019, 04:13 [ТС] | ||
Наверное что-то вроде "рекурсивные дженерики". Очень удобно, когда в интерфейсе/абстрактном классе нужно указать именно класс реализации этого интерфейса в параметрах или как возврат.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 03.07.2019, 05:00 | |
|
я так и не пойму, чего ты хочешь добиться.
0
|
|
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||
| 03.07.2019, 16:24 [ТС] | ||
|
0
|
||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
|
||||||||
| 03.07.2019, 20:47 | ||||||||
|
http://www.angelikalanger.com/... tml#FAQ206 Добавлено через 1 минуту
1
|
||||||||
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
|||
| 03.07.2019, 22:08 [ТС] | |||
|
0
|
|||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
|
|
| 03.07.2019, 22:21 | |
|
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 03.07.2019, 22:23 | |
|
lignium, кажется ты хочешь погуглить bridge design pattern
0
|
|
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||
| 03.07.2019, 22:50 [ТС] | ||
|
0
|
||
|
|
|
| 04.07.2019, 07:16 | |
|
Не по теме: Мне кажется, было бы проще прост через наследование сделать Добавлено через 30 минут
0
|
|
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
|
| 18.10.2019, 20:58 [ТС] | |
|
Значится так...
Я решил проблему, вернее понял почему она возникает. Дело в том, что класс Visualization имеет уточнение о типе региона, для которого он предназначен, а также метод Visualization#visualize(R) который я пытаюсь вызывать имеет не какой-то там регион, а вполне конкретный - R. То есть метод класса запрашивает вполне конкретный тип, в соответствии с контекстом выполнения. У Visualization<?> контекста нет, так как тип региона нам неизвестен. Java не может проверить правильный ли мы регион передаем. Методом экспериментов удалось выяснить, что это стандартный механизм защиты, чтобы невозможно было передать не известно что в метод класса с неизвестным контекстом. Решения тут два, либо заглушить предупреждения и использовать голые типы и написать @SuppressWarnings({"rawtypes", "unchecked"}), либо же преобразовать сигнатуру метода для использования любого региона, а проверку дополнительную придется делать на стороне этого метода. Другое дело что это код реального времени, и я не могу себе позволить выполнять тяжелые операции по типу instanceof или Class#isInstance(Object), но это уже другая история... Странно почему я до этого раньше не додумался. Догадался уже тогда, когда хотел недавно создать похожий метод с таким вот аргументом с сюрпризом. Врезалась в голову мысль, а как же Java то проверит это дело?
0
|
|
| 18.10.2019, 20:58 | |
|
Помогаю со студенческими работами здесь
17
Ошибка: Undefined function or method 'sq' for input arguments of type 'double'
Ошибка: Undefined function or method 'lsqr' for input arguments of type 'double' Выдает ошибку:Undefined function or method 'f' for input arguments of type 'double' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
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 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|