![]() |
Модераторы: LSD, AntonSaburov Страницы: (80) « Первая ... 54 55 [56] 57 58 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если бы было нельзя, я бы не спрашивал
![]() -------------------- 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. |
|||
|
||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: 4 Всего: 12 |
Это вопрос про ковариантость в java 1.5?
В классе наследнике может быть два метода с разными возращаемыми типами, один из которых отмечен как "синтетический". Но в исходнике этого метода не увидеть... |
|||
|
||||
Bozo |
|
||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Ну если ты имеешь в виду String<Object, то наверное вот эта ссылка http://www.java-tips.org/java-se-tips/java...turn-types.html поможет |
||||
|
|||||
powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Можно. Вот код:
Вот результат выполнения:
|
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Именно это я и имел в виду
![]() Хотя мой пример был с параметризованным классом, но суть та же.
-------------------- 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. |
|||
|
||||
Се ля ви |
|
||||||||||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
В мои руки попал довольно красивый тестик из пяти задачек. Мне кажется, в этом разделе их ещё не было.
По каждому пункту ответьте на 2 вопроса: - Скомпилится ли программа? - Если нет то почему, если да, то что будет на экране? Сначала ответьте, а потом проверьте ![]()
Это сообщение отредактировал(а) Се ля ви - 22.10.2006, 03:16 -------------------- |
||||||||||
|
|||||||||||
powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
1) Первое что подумал: Нифига не с компилируется.
Второе что подумал: А вдруг??? Первое чувство было верным... int i - 0; компилятор говорит не хватает ";" 2) Тут string напечатает. Но я не помню почему, вроде где-то читал, что в подобных случаях (существуют методы, параметры которых имеют наследственные связи) принято вызывать метод принимающий аргумент с наиболее узким типом. По крайней мере, вот такой пример:
выдал HashMap. ![]()
уже не компилируется. 3) Infinity. Это в любой нормальной книге по Java написано. 4) Это так же написано в любой уважающей себя книге по Java. Объект может обращаться к закрытым полям внутри своих методов. И этот случай не исключение. 5) Это классический пример работы полиморфизма в Java. Для методов идет динамический поиск метода по типу объектов, а для полей такого нет. Для полей тип ссылки будет определяющим. |
||||
|
|||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Я это дело сканил и распознавал - просто не заметил глюка... Сорри ![]() Тут просто учитывается глубина дерева наследования. Вызовется метод, аргумент которого дальше всех отстоит от Object. Объяснение тоже простое - когда JVM ищет, какой из перегруженных методов ей вызвать, она выстраивает их именно в порядке, соответствующем глубине наследования, что бы самые глубокие наследники были впереди и пробует привязать вызов к каждому, вызывая первый, который подойдёт. С null`ом, естественно, подойдёт любой, так что вызывается первый в этом порядке ![]() -------------------- |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ничего подобного ![]() На этапе компиляции компилятор решает метод с какой сигнатурой вызвать. Сигнатуры у методов public void test(String) и public void test(Object) различны, и какой из методов вызвать решает компилятор. Проверить просто:
Получим "CharSequence", а не "String". Это то что называется перегруженными функциями. Такое поведение нужно, чтобы разруливать подобные типы конфликтов:
-------------------- 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. |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если взять стандартный класс java.util.Date и посмотреть его исходный код:
то будет видно, что он нарушает контракт для метода equals(). Вопрос: в что именно тут не так? ![]() -------------------- 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. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Может, ты имеешь в виду что нет проверки obj на null (в этом случае должен возвращаться false, а здесь будет NullPointerException)?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет не будет, instanceof возвращает false если ссылка равна null. Так что с этим все в порядке ![]() -------------------- 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. |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Раскалывайтесь, LSD, что имели в виду. Я никаких нарушений (кроме потенциальных - если взглянуть, например, на java.sql.Timestamp) не вижу. Это сообщение отредактировал(а) w1nd - 30.10.2006, 01:52 -------------------- ![]() ![]() |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Именно в свете наличия java.sql.Timestamp эта ошибка и появляется. В доке написано:
т.е. в данном случае была нарушена симметричность.
-------------------- 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. |
||||
|
|||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: 4 Всего: 12 |
Так нарушение-то в Timestamp, а не Date. Если бы метод Equals не был переопределён с нарушением контракта метода Equals объекта Date, то всё было бы "хорошо".
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |