Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2

Использование определенного типа в шаблоном классе, где параметром шаблона является <?>

29.01.2014, 17:33. Показов 790. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Плохо знаю Java, поэтому не могу написать следующее:

есть такие классы
Java
1
2
3
4
5
6
7
abstract AbstractClass <T> {
    abstract public someMethod (T data);
}
 
ConcreteClass <T> extends AbstractClass  <T> {
    public someMethod (T data) {}
}
где-то в коде использую их так
Java
1
2
3
AbstractClass<?> object = new ConcreteClass<someType>();
// теперь мне нужно вызвать метод
object.someMethod(someTypeObject);
компилятор не дает вызвать метод в таком виде, пишет
Code
1
2
3
4
java: method имя_метода in class имя_класс<имя_реального_типа> cannot be applied to given types;
  required: capture#1 of ?
  found: имя_класса
  reason: actual argument имя_реального_типа cannot be converted to capture#1 of ? by method invocation conversion
Не подскажите как мне быть?

P.S. <?> использовал без особого понимания, суть в том, что у меня реальный тип известен только в рантайме, может есть другой способ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2014, 17:33
Ответы с готовыми решениями:

Использование шаблоном не константного типа
Здравствуйте, вот я снова тут. С прошлого вопроса я так и не ушёл далеко, снова возникли некоторые вопросы. Дак вот. Имеется у меня...

Аргумент типа const char* несовместим с параметром типа char* в классе
Данную ошибку находит в 74 - 76 строках, не могу понять что не так. #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std;...

Поле типа string в классе, как и где лежит?
Всем привет! Возник теоретический вопрос. Когда я создаю свой класс и в нем добавляю поле типа string(из стандартной библиотеки) и хочу...

4
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
29.01.2014, 17:47
Java
1
AbstractClass object = new ConcreteClass<someType>();
Так ошибки не будет. Но как-то странно использовать шаблоны без проверки типа при компиляции - что-то в этом не то.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.01.2014, 18:07  [ТС]
KuKu, спасибо, работает.
Цитата Сообщение от KuKu Посмотреть сообщение
Но как-то странно использовать шаблоны без проверки типа при компиляции - что-то в этом не то.
Может не совсем понятно объяснил в первом посте, но это обычное дело. Пишу курсовик для ВУЗа, у меня есть абстраный класс Граф, есть его наследники - граф, представленный списком смежности, и граф, предстваленный матрицой смежности. У графа есть ребро (самостоятельный класс), у ребра есть данные, тип данных - параметр шаблона (строка, целое число, etc). Программа тестирования реализованных классов предполагает, что тип данных ребра задается в рантайме. В очень грубом виде это выглядит так

Java
1
2
3
4
5
6
7
8
9
10
System.out.println ("1. String");
System.out.println ("2. Integer");
 
// читаем ввод пользователя в answer
 
if (answer == 1) {
    graph = new GraphClass<String>();
} else if (answer == 2) {
    graph = new GraphClass<Integer>();
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
29.01.2014, 21:45
[del]
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
30.01.2014, 09:51
Мне что-то кажется, что у Вас ошибка проектирования. Если Вам нужно знать тип данных ребра - сделайте свой, унаследуйтесь от него, создавайте GraphClass с дочерними типами, а вместо <?> пишите родительский.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2014, 09:51
Помогаю со студенческими работами здесь

Явная специализация шаблона шаблоном
У меня есть шаблонный класс someClass: template &lt;class T&gt; class someClass { public: vector&lt;T&gt; vec; }; Я хочу сделать для...

Drag&drop определенного типа файлов в директорию, где запущена программа
Подскажите, как реализовать drag&amp;drop определенного типа файлов в директорию, откуда запущена программа? Работаю в delphi xe8

Поток std::thread с шаблоном в классе
Доброго времени суток уважаемые! Уперся лбом в следующую проблему. При использовании параллельных потоков в основном потоке проблем...

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать метод возвращающий указатель на нужное...

Для использование шаблона переменной требуется список аргументов шаблона
Здравствуйте! Не могу понять в чём проблема. //ALL2.cpp #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru