|
|
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Код из tutorial по jave: for (Iterator<Type> it = m.keySet().iterator(); it.hasNext(); ) if (it.next().isBogus()) it.remove(); Вопрос: Любой пример в обучалке по использованию iteratorа имеет вышеприведенный вид. Мы проверяем на "true" или "false" выражение it.next(), но что подразумевается под "isBogus" не понятно. А как вы делаете эту проверку? Как проверять на null в jave? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:49:28 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
isBogus() это метода класса Type. Читай так же туториал по Java Generic. К итераторам отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:03:26 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Лучше делать тогда уж так Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:10:34 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
1. isBogus() это просто условность, можете заменить это для своего спокойствия чем-то вроде isEtoPlohoyeZnatchenie() (а лучше учите ангийский :) ) Кстати, тут проверки на null нет. 2. Проверка на null, как ни странно, зависит от того, что вы хотите получить: Например, assert val != null; ( - при отладке ) или if (val == null) { .... или if (null == val) { ... (имеет значение порядок, вопрос для домашнего задания: Почему?) или val.myMethod(); //Т.е. принципиально хотим получить исключение при null (не совсем проверка, разумеется, но где-то тоже пригодится). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:11:50 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Все - все , уже все понятно - не бейте... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:19:02 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carperif (null == val) { ... (имеет значение порядок, вопрос для домашнего задания: Почему?) Я с заданием не справился. Какой правильный ответ? Очень похоже на неуместную оптимизацию, но и то сомневаюсь в ее эффективности, все таки Java не С/С++. Зато ухудшение читаемости на лицо. Очень любопытно какой правильный ответ. В гугле нашел только это , но и там однозначно не объяснили зачем это может быть нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:41:18 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carper или if (val == null) { .... или if (null == val) { ... (имеет значение порядок, вопрос для домашнего задания: Почему?) Нипочему. Не имеет никакого значения этот порядок. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. Код: plaintext 1. LAUNCH 1 Код: plaintext 1. 2. 3. 4. LAUNCH 2 Код: plaintext 1. 2. 3. 4. LAUNCH 3 Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 18:02:27 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carperили if (val == null) { .... или if (null == val) { ... (имеет значение порядок, вопрос для домашнего задания: Почему?) Я даже не расценила это как вопрос, судя по другим языкам - порядок не имеет значение. А тут такая полемика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 18:12:06 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Что характерно. jdk142_04\bin\javaw -server -Xms32m -Xmx256m... Код: plaintext 1. 2. 3. 4. jdk1.6.0\bin\javaw -server -Xms32m -Xmx256m... Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 18:14:49 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
SATURN2 Я даже не расценила это как вопрос, судя по другим языкам - порядок не имеет значение. А тут такая полемика Это в C++ имеет значение. Но это язык вообще для тех, кто на всю голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 18:15:32 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
SATURN2Я даже не расценила это как вопрос, судя по другим языкам - порядок не имеет значение. А тут такая полемика просто бывают скрытые фичи языка. Например "1".equals(str) часто использовать предпочтительнее, чем str.equals("1"), т.к. во втором случае может быть эксепшен при str == null (или нужна дополнительная проверка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 18:17:43 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог Это в C++ имеет значение. Но это язык вообще для тех, кто на всю голову. Я уж думала, что совсем С++ забыла за 2 года. см. здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 22:56:43 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carper if (val == null) { .... или if (null == val) { ... (имеет значение порядок, вопрос для домашнего задания: Почему?)раскажи, пожалуйста, почему? я спать не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 23:10:16 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
SATURN2Я уж думала, что совсем С++ забыла за 2 года. см. здесь В С/С++ как раз самое главное отличие, что при (NULL == val) нельзя ошибку сделать, забыв одно равно. Много раз на этом накалывался. К счастью, в Java такой проблемы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 10:18:53 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
kest_ruВ С/С++ как раз самое главное отличие, что при (NULL == val) нельзя ошибку сделать, забыв одно равно. Много раз на этом накалывался. К счастью, в Java такой проблемы нет. Вопрос звучал так carperимеет значение порядок Ответ - нет. Не надо забывать ставить равно ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 11:06:01 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
Господи! Понафлудили, знал бы не писал, я же так- мелкий нюанс. :) Ну, ладно возьмите такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Пример, разумеется примитивный и ошибка всплывет быстренько, а если у нас вышеприведенный NullPointerException ожидался совсем по другой причине (например, при чтении из потока) и мы никак не предполагали, что в его обработке надо учитывать и явное присвоение null? Рассмотрим случай Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 11:46:54 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carperГосподи! Понафлудили, знал бы не писал, я же так- мелкий нюанс. :) Прежде ты написал, что имеет значение порядок операндов при использовании логического оператора сравнения. А теперь приводишь пример с оператором присваивания. В общем, запутал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 12:08:11 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
wessen carperГосподи! Понафлудили, знал бы не писал, я же так- мелкий нюанс. :) Прежде ты написал, что имеет значение порядок операндов при использовании логического оператора сравнения. А теперь приводишь пример с оператором присваивания. В общем, запутал. Я имел в виду, что порядок операторов при использовании логического оператора сравнения имеет значение для недопущения вышеозначенной ошибки. Хотя, согласен, что понять это можно было весьма неоднозначно. Я больше так не буду, где тут смайлик кающегося грешника? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 12:15:23 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carper Я имел в виду, что порядок операторов при использовании логического оператора сравнения имеет значение для недопущения вышеозначенной ошибки. Флудить, так флудить :) В каком месте вот в этом примере http://sql.ru/forum/actualpost.aspx?bid=38&tid=489745&mid=4859563&p=1&act=quot#4859364 , используется логический оператор сравнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 12:35:13 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carper Рассмотрим случай Код: plaintext 1. Ты написал полную чушь. Со всех точек зрения. Просто расслабься и в дальнейшем таких громких заявлений не делай. Или хотя бы уж пиши нормальные примеры. Для отлова применений вместо сравнений люди давно придумали такие средства в IDE, как: а) подсветка синтаксиса б) проверка кода в runtime (которая такие ошибки выявляет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 15:57:19 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
carperХотя, согласен, что понять это можно было весьма неоднозначно. А я вот понял сразу. Хотя я и не адепт таких извращений. Еще пример могу привести: Код: plaintext 1. 2. 3. Т.е. очевидно, что проверка на false. Оператор отрицания ! можно и не заметить или забыть поставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 16:13:02 |
|
||
|
ITERATOR.next()
|
|||
|---|---|---|---|
|
#18+
mikkri carperХотя, согласен, что понять это можно было весьма неоднозначно. А я вот понял сразу. Хотя я и не адепт таких извращений. Ну, не знаю, я все-же думаю, что мне следовало написать пояснее, хотя бы с точки зрения формальной логики. Что касается извращения null == value, то и согласен и нет, с одной стороны, чисто визуально смотрится неопрятно, с другой стороны позволяет несколько укоротить ручки самому себе. Такие ошибки обычно крайне редки, но, по закону подлости, если уж всплывут, то ищут их всем миром не один день. В общем же, вопрос довольно любопытный с психологической точки зрения, т.к. борясь с одной стороны с ошибками, формализуя правила написания кода, с другой, мы ухудшаем читабельность кода, что тоже может вызвать ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 18:27:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34906022&tid=2144145]: |
0ms |
get settings: |
19ms |
get forum list: |
23ms |
check forum access: |
11ms |
check topic access: |
11ms |
track hit: |
62ms |
get topic data: |
31ms |
get forum data: |
5ms |
get page messages: |
170ms |
get tp. blocked users: |
1ms |
| others: | 326ms |
| total: | 659ms |

| 0 / 0 |
