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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Overriding generified methods, перегрузка параметризированного метода  
V
    Опции темы
taro
Дата 28.3.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!
При попытке пометить метод в потомке как  @Oerride получаю сообщение об ошибке
Мне казалось, что если в потомке при описании параметров метода указать класс, подходящий под определение базового метода в родителе, то проблем быть не должно. 
Не поможете ли понять, в чем может быть дело? 

Код

Класс-предок 
    public <T extends SimpleEntity> void  fillFields(T ent, Session ses){
        throw new Error("called  method 'fillFields' is not implemented");
    };

Класс-потомок
    public void fillFields(SoftBlock ent, Session ses){....}        

Описание класса 
    public class SoftBlock extends SimpleEntity{..}


Спасибо!
PM MAIL   Вверх
LSD
Дата 28.3.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Так он его и не переопределяет smile Вот если бы ты написал:
Код

public void fillFields(SimpleEntity ent, Session ses)

тогда да, он бы его переопределял, а так нет. 

Дело в том, что метод в предке принимает любой класс SimpleEntity, а в потомке только SoftBlock, т.е. ситуация получается похожая на:
Код

class A
{
  public void foo(Object o)
  {}
}

class B extends A
{
  public void foo(String s)
  {}
}

тут тоже никто никого не переопределяет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
taro
Дата 28.3.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Цитата(LSD @  28.3.2008,  13:24 Найти цитируемый пост)
тут тоже никто никого не переопределяет. 

В вашем примере именно override и происходит. Согласно JLS можно унаследовать метод, изменив параметр / возвращаемое значение на класс, являющийся предком класса, использованного в методе-предке. 

Все равно спасибо, у меня, наверное, уже горе от ума начинается. 
PM MAIL   Вверх
LSD
Дата 28.3.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(taro @  28.3.2008,  13:35 Найти цитируемый пост)
Согласно JLS можно унаследовать метод, изменив параметр / возвращаемое значение на класс, являющийся предком класса, использованного в методе-предке.

Ссылку в студию smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
taro
Дата 28.3.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(LSD @  28.3.2008,  13:42 Найти цитируемый пост)
Ссылку в студию

пруфлинк реквайред? 

http://java.sun.com/docs/books/jls/third_e...sses.html#8.4.5


PM MAIL   Вверх
Kangaroo
Дата 28.3.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(taro @  28.3.2008,  12:35 Найти цитируемый пост)
В вашем примере именно override и происходит.

Overload там обычный, не путайте людей smile 


--------------------
Lost....
PM MAIL MSN   Вверх
taro
Дата 28.3.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Kangaroo @  28.3.2008,  14:23 Найти цитируемый пост)
Overload там обычный, не путайте людей smile  


Вынужден путать. Цитата 8.4.8.3: 

Цитата

The rules above allow for covariant return types - refining the return type of a method when overriding it.


Это сообщение отредактировал(а) taro - 28.3.2008, 14:27
PM MAIL   Вверх
fixxer
Дата 28.3.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(taro @ 28.3.2008,  14:27)
Цитата(Kangaroo @  28.3.2008,  14:23 Найти цитируемый пост)
Overload там обычный, не путайте людей smile  


Вынужден путать. Цитата 8.4.8.3: 

Цитата

The rules above allow for covariant return types - refining the return type of a method when overriding it.

а причем тут return type? Это да, при переопределении метода в потомке, у нас есть право сузить возвращаемый тип, но причем тут аргументы метода?

Это сообщение отредактировал(а) fixxer - 28.3.2008, 14:38


--------------------
user posted image
PM MAIL ICQ   Вверх
Kangaroo
Дата 28.3.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(fixxer @  28.3.2008,  13:36 Найти цитируемый пост)
Это да, при переопределении метода в предке у нас есть право сузить возвращаемый тип, но причем тут аргументы метода?

Вот, вот  smile 


--------------------
Lost....
PM MAIL MSN   Вверх
taro
Дата 28.3.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(fixxer @  28.3.2008,  14:36 Найти цитируемый пост)
а причем тут return type? Это да, при переопределении метода в потомке, у нас есть право сузить возвращаемый тип, но причем тут аргументы метода?

Мне кажется, при том, что замена сигнатуры принимаемых параметров - епархия перегрузки. Замена возвращаемого типа - епархия covariant return. 
PM MAIL   Вверх
Kangaroo
Дата 28.3.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(taro @  28.3.2008,  13:41 Найти цитируемый пост)
Мне кажется, при том, что замена сигнатуры принимаемых параметров - епархия перегрузки. Замена возвращаемого типа - епархия covariant return.  

Все правильно. Тогда почему ты говоришь, что пример LSD - override? если там замена сигнатуры принимаемых параметров 


--------------------
Lost....
PM MAIL MSN   Вверх
fixxer
Дата 28.3.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(taro @ 28.3.2008,  14:41)
Цитата(fixxer @  28.3.2008,  14:36 Найти цитируемый пост)
а причем тут return type? Это да, при переопределении метода в потомке, у нас есть право сузить возвращаемый тип, но причем тут аргументы метода?

Мне кажется, при том, что замена сигнатуры принимаемых параметров - епархия перегрузки. Замена возвращаемого типа - епархия covariant return.

Что и написано в цитируемом Вами пункте. Про "замену сигнатуры принимаемых параметров" там ни слова.


--------------------
user posted image
PM MAIL ICQ   Вверх
taro
Дата 28.3.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(fixxer @  28.3.2008,  14:57 Найти цитируемый пост)
то и написано в цитируемом Вами пункте. Про "замену сигнатуры принимаемых параметров" там ни слова. 

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

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

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


 




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


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

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