Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При выполнении неможет найти конструктор генерикса 
:(
    Опции темы
Dims
Дата 10.8.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



У меня в классе

Код

public class Compound<M extends Met>
        implements Iterable<M>


был конструктор

Код

public Compound(boolean ordered, M... mets)


Впоследствии я выяснил, что передавать mets мне не нужно. Убрал этот параметр и переделал все места, где этот конструктор вызывался.

И полезли ошибки, причём во время выполнения возникает java.lang.NoSuchMethodError, а компиллятор не ругается.

Я пробую две версии. В первой версии у меня конструктор описан

Код

public Compound(boolean ordered)


во второй версии

Код

public Compound(boolean ordered, M... mets)


причём в коде конструктора mets не используется. Поскольку параметр mets опционален, то по идее, обе версии должны работать одинаково.

Ан нет!

Первая версия не работает в классе

Код

public abstract class Absorbtive
        extends Compound<Met> {


где в конструкторе вызывается super(false)

Вторая версия не работает в классе

Код

public abstract class Operator
        extends Compound {


Я так понимаю, она не может найти конструктор, так как в нём не используется типизированный параметр.

Что делать?

По-моему, это чуть ли не ошибка в то ли в джавамашине, то ли в компилляторе.

Добавлено через 14 минут и 23 секунды
Решил при помощи вот такого шаманства

Код

public <M> Compound(boolean ordered/*, M... mets*/) {


и плюс явное указание параметра базовых генериксов во всех местах.

Не ожидал такой подлянки от джавы.

Неужели баг Джавы?

Я много раз очищал проект НетБинса, включая прямое стирание всех class и jar файлов -- не помогло. Значит, НетБинс не виноват.

Может быть, рантайм где-то по-разному указан, с одним компилируется, а с другим выполняется?
PM MAIL   Вверх
cube
Дата 11.8.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 2
Всего: 3



В вашем примере использовался класс с конструктором Compound(boolean ordered, M... mets), иначе как java машина знала бы о таком классе?

У меня такие ошибки бывают когда классы находятся в разных библиотеках, компилятор здесь не причем, удаление всех библиотек проекта, + clean 'n' bild всех связанных проектов, библиотек - решают эту проблему ;) Сам проверял...

Если вопрос остался, то посмотрите внимательно где вы используете этот класс, как связан этот класс с вашим проектом, какие библиотеки еще используют этот класс и тогда вам все станет ясно ;) удачи!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.