|
|
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
jlsIf a method declaration d1 with return type R1 overrides or hides the declaration of another method d2 with return type R2, then d1 must be return-type-substitutable (§8.4.5) for d2, or a compile-time error occurs Чтобы при override/hide не было ошибок компиляции метод в потомке должен быть return-type-substitutable относительно метода в предке ------------------------------------ читаем что значит return-type-substitutable: jlsA method declaration d1 with return type R1 is return-type-substitutable for another method d2 with return type R2 iff any of the following is true: If R1 is void then R2 is void. If R1 is a primitive type then R2 is identical to R1. If R1 is a reference type then one of the following is true: --R1, adapted to the type parameters of d2 (§8.4.4), is a subtype of R2. --R1 can be converted to a subtype of R2 by unchecked conversion (§5.1.9). --d1 does not have the same signature as d2 (§8.4.2), and R1 = |R2|. все пункты понятны, кроме этого: jlsd1 does not have the same signature as d2 (§8.4.2), and R1 = |R2| как так то? я может чего-то не учитываю но для меня это выглядит как будто возвращаемые типы должны быть одинаковые , а сигнатуры любые лишь бы не одинаковые. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ведь этот код вроде соответствует правилу, но это ж очевидный compilation fail. Проясните пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 16:22 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
P.S. 2 сигнатуры равны если равны имена методов и список параметров одинаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 16:24 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Добавляем пропущенную закрывающую скобку, опускаем ошибки отсутствия импортов и читаем: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 20:21 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, извиняюсь за пропущеннную скобку. Смотрите по jls чтобы НЕ было ошибок компиляции надо, чтобы опреление метода в потомке был return-type-substitutable смотрим определение в родителе Код: java 1. в потомке: Код: java 1. читаем, чтобы сигнатуры были return-type-substitutable нужно выполнить определенные условия в зависимости от возвращаемого значения предка. если возвращаемое значение... void... - не наш случай примитив .... - не наш случай. ссылочный тип. Во! наш вариант. если верно хотя бы что-то одно из следующего: -.... -.... -сигнатуры должны быть разные, а возвращаемые типы - одинаковые. -Так это ж прям как у меня. И почему же ошибка компиляции ? Я думаю я объяснил свою логику. Видимо где-то я не учёл что-то. Расскажите что) Только пожалуйста с привязкой к jls. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:08 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
redwhite90-сигнатуры должны быть разные, а возвращаемые типы - одинаковые. -Так это ж прям как у меня. И почему же ошибка компиляции ?Потому, что совершенно другая ошибка. Класс, реализующий интерфейс обязан или определить или перекрыть все методы интерфейса. Вы этого не сделали. @Override требует перекрытия, но метода с таким именем и списком аргументов - нет. Вторая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:16 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, да я понимаю вас. Представьте, что вы java не знаете и делаете всё по данной мною инструкции. Какой пункт я нарушил ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 23:02 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Я умываю руки и могу только повторить: JLS (стандарты С/С++) - только в качестве развлечения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 23:17 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, на самом деле я хочу научиться читать jls. По-моему достаточно интересно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 23:56 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
redwhite90, If a method declaration d1 with return type R1 overrides or hides the declaration of another method Выделение мое. У вас предусловие не выполняется. Определение overrides/hides дается где-то в другом месте. У вас там как раз у d1 и d2 сигнатуры разные, а значит это правило к ним не применимо (не подходит к предусловию). А нарушаете вы вообще 8.1.1.1: If a normal class that is not abstract contains an abstract method, then a compile-time error occurs. <skip> A class C has abstract methods if any of the following is true: <skip> A direct superinterface (§8.1.5) of C declares or inherits a method (which is therefore necessarily abstract) and C neither declares nor inherits a method that implements it. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:13 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
авторIf a method declaration d1 with return type R1 overrides or hides... кажется эта фраза подразумевает, что правила hide or override выполнены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:24 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
maxkar, да да да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:25 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
redwhite90на самом деле я хочу научиться читать jls. По-моему достаточно интересно?Нет там ничего интересного, пока вы не начали делать инструментальные средства. Сотни страниц сухого и сжатого текста, объясняющие тривиальные, не очень тривиальные и очень нетривиальные вещи. P.S. Жил в девятнадцатом веке в одной из российских губерний плотник. И было у него увлечение - математика. Записывал свои мысли в тетрадку, самостоятельно придумав обозначения. И когда решил, что получилось у него нечто интересное - отвёз результаты своих тридцатилетних исследований в город. Преподавателю математики. Преподаватель оказался человеком упорным и дотошным - разобрался и в обозначениях и в результатах. Плотник самостоятельно разработал дифференциальное исчисление. Преподаватель сказал ему об этом примерно так, что вот, великие математики ... Около века назад ... А вы - сами ... Как здорово. А плотник так сильно огорчился потерянными впустую десятилетиями, что слёг с нервным расстройством и умер. P.P.S. Правда или нет - не знаю. Очень давно или в журнале читал или по радио слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:36 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, jlsIf a method declaration d1 with return type R1 overrides or hides... это когда равны имена методов и спискок параметров с погрешностью до type-erasure. --------- Basil A. Sidorov - забавная история. Но иногда требуется что-то уточнить...узнать не про конкретное выполнение конкретного кода, а ширину подобных случаев - приходится глядеть в jls. Смотришь и волосы дыбом становятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:18 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
redwhite90Но иногда требуется что-то уточнить...узнать не про конкретное выполнение конкретного кода, а ширину подобных случаев - приходится глядеть в jls. Смотришь и волосы дыбом становятсяУчебники надо смотреть - там грамотные и квалифицированные люди, имеющие педагогический навык, делают спецификации языка доступными для простых смертных. Вы когда URLConnection используете RFC на http тоже читаете? Или, всё-таки, делаете по примерам и документации, а со спецификацией разбираетесь тогда, когда есть реальная проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:51 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, хм у меня глупый наверное, но всё таки вопрос. а спецификация и документация это разные вещи ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 16:09 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
redwhite90а спецификация и документация это разные вещи ? В данном случае под спецификацией понимаются строгие технические требования. А под документаций - инструкция к применению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 16:12 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
Кстати: JLS автор3.10.4. Character Literals ... A character literal is always of type char (§4.2.1). Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 16:52 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
no56892, требуется ответ по jls ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 17:18 |
|
||
|
return-type-substitutable. почитайте со мной jls.
|
|||
|---|---|---|---|
|
#18+
http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.2 A narrowing primitive conversion may be used if the type of the variable is byte, short, or char, and the value of the constant expression is representable in the type of the variable. A narrowing primitive conversion followed by a boxing conversion may be used if the type of the variable is : Byte and the value of the constant expression is representable in the type byte . Short and the value of the constant expression is representable in the type short. Character and the value of the constant expression is representable in the type char. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38639486&tid=2127190]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 416ms |

| 0 / 0 |
