|
|
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
Обнаружил что называется зияющую дыру в своих познаниях, поэтому прошу не смеяться слишком громко. Вопрос такой - решил добавить к ResultSet маленький методик и столкнулся с тем что это не класс , а интерфейс и соответственно мне нужно прописать все его методы. Но это ладно - там по-моему какоето слово ключевое, волшебное есть. Больше меня поразило следующее - если ResultSet - интерыейс то какой класс реализует все его методы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:54 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
ХА-ХА-ХА PS извини. рассмеялось что-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:55 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugБольше меня поразило следующее - если ResultSet - интерыейс то какой класс реализует все его методы? тот, который поставляется с jdbc-драйвером. jdbc-драйвер - это реализация всех интерфейсов java.sql.* Connection, Statement - тоже кстати интерфейсы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:56 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugОбнаружил что называется зияющую дыру в своих познаниях, поэтому прошу не смеяться слишком громко. Вопрос такой - решил добавить к ResultSet маленький методик и столкнулся с тем что это не класс , а интерфейс и соответственно мне нужно прописать все его методы. Но это ладно - там по-моему какоето слово ключевое, волшебное есть. Больше меня поразило следующее - если ResultSet - интерыейс то какой класс реализует все его методы? вызови getClass() у объекта реализующего ResultSet и узнаешь класс, который это делает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:01 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs NaugОбнаружил что называется зияющую дыру в своих познаниях, поэтому прошу не смеяться слишком громко. Вопрос такой - решил добавить к ResultSet маленький методик и столкнулся с тем что это не класс , а интерфейс и соответственно мне нужно прописать все его методы. Но это ладно - там по-моему какоето слово ключевое, волшебное есть. Больше меня поразило следующее - если ResultSet - интерыейс то какой класс реализует все его методы? вызови getClass() у объекта реализующего ResultSet и узнаешь класс, который это делает :)объект, кстати не реализует интерфейс :) по сабжу: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:20 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
а что же он тогда делает с этим интерфейсом ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:32 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
Наверное Граспых подразумевал, что интерфейс реализует класс, а не объект :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:36 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
Получил: sun.jdbc.odbc.JdbcOdbcResultSet То есть если я хочу добавить метод к ResultSet-у мне надо екстендить именно этот класс? А потом база смениться и появится другая реализация? Что-то подозрительно. Как сделать правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:38 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
wessenНаверное Граспых подразумевал, что интерфейс реализует класс, а не объект :) Я тоже это подразумевал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:41 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugПолучил: sun.jdbc.odbc.JdbcOdbcResultSet То есть если я хочу добавить метод к ResultSet-у мне надо екстендить именно этот класс?да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:42 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugПолучил: sun.jdbc.odbc.JdbcOdbcResultSet То есть если я хочу добавить метод к ResultSet-у мне надо екстендить именно этот класс? А потом база смениться и появится другая реализация? Что-то подозрительно. Как сделать правильно? Ага, при смене JDBC драйвера, твой код работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:43 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
Хватит измываться - ведь как-то это можно сделать правильно. Мне всего-то что надо это методик который в зависимости от посылаемого параметра менял get-методы (то есть послал стринг - вернул getString, послал "data" верул getdate с определённым форматом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:48 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugПолучил: sun.jdbc.odbc.JdbcOdbcResultSet То есть если я хочу добавить метод к ResultSet-у мне надо екстендить именно этот класс? А потом база смениться и появится другая реализация? Что-то подозрительно. Как сделать правильно? Не надо ничего наследовать, надо делать класс враппер. Типа такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если нужно обратиться к новому методу, то в коде можно будет сделать вызов new MyXXX(rs).getPutinName(); Тот же MyXXX можно сувать везде где пролазит ResultSet :) "Глобально" изменить интерфейс ResultSet ты не сможешь никогда. (Если не захочешь переписать все его реализации :)) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:49 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
я конечно ни на что не претендую но автордалее реализуем все методы интерфейса ResultSet, переадресуя эти вызовы rs это тоже не намного лучше чем в дрова свои куски вставлять можно так схитрить Код: 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. вот а работает это так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. при добавлении новых методов в интерфейс (хотя насколько я знаю это не принято) никаких проблем возникнуть не должно, а то придется класс (врапер) править для добавления новых методов PS я кстати такойже вопрос задавал мне и этого не насоветовали сказали что я типа еще молод ;-) пришлось самому придумывать ------------------------ жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 20:10 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrэто тоже не намного лучше чем в дрова свои куски вставлять Неправда. Способ, предложенный NotGonnaGetUs - стандартное решение в подобных ситуациях, причем правильное, на мой взгляд :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 08:59 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrя конечно ни на что не претендую но автордалее реализуем все методы интерфейса ResultSet, переадресуя эти вызовы rs это тоже не намного лучше чем в дрова свои куски вставлять можно так схитрить .... ------------------------ жизнь как пестня Говорить о том, что одно решение лучше другого не стоит, у каждого есть свои плюсы и минусы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:24 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
те если изменился драйвер и в RS появились новые методы мне нужно залезть дописать класс и забилдить его еще раз и доставить например всем клиентам которые были сделаны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:27 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
да я не сказал что мое решение лучше я просто предложил его :-)) идет здоровый конструктивный диалог и не больше (никого не обзывал дураками и не говорил что все тупые и ни каплю не засомневался ни в чьей компетенции) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:32 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrте если изменился драйвер и в RS появились новые методы мне нужно залезть дописать класс и забилдить его еще раз и доставить например всем клиентам которые были сделаны? ты ваще читаешь че пишут?? че тут написано? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:34 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrте если изменился драйвер и в RS появились новые методы мне нужно залезть дописать класс и забилдить его еще раз и доставить например всем клиентам которые были сделаны? Ты правда не знаешь ответ на этот вопрос? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:34 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
Не, а вот если в интерфейсе ResultSet произойдёт изменение при смене версий явы, добавят какой-нибудь метод, то получится что мой класс начнёт требовать реализовать недостающее либо объявить его абстрактным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:46 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
NaugНе, а вот если в интерфейсе ResultSet произойдёт изменение при смене версий явы, добавят какой-нибудь метод, то получится что мой класс начнёт требовать реализовать недостающее либо объявить его абстрактным? ну и что? как минимум клиенту ты должен будещь инсталлировать новый jre. а если jre более старой версии - тогда и твой класс работает по-прежнему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:50 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
я знаю что в екселе например когда с ним из какого нить С работаешь есть метод value и метод value_2 (интересно зачем он нужен???) 2NotGonnaGetUs что то не приходит ничего в голову не трудно будет ответить (правда интересно) 2Timm мужчина ЭТО форум тут (я смею надеятся) в спорах рождается истина и не надо показывать как богат наш язык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 10:53 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrи не надо показывать как богат наш язык почему? всегда интересно узнавать что-то новое. я, например, очень люблю русский язык. мне всегда интересно просто читать что-то на нем написанное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 11:00 |
|
||
|
Ликбез по интерфейсам
|
|||
|---|---|---|---|
|
#18+
vfabrя знаю что в екселе например когда с ним из какого нить С работаешь есть метод value и метод value_2 (интересно зачем он нужен???) 2NotGonnaGetUs что то не приходит ничего в голову не трудно будет ответить (правда интересно) 2Timm мужчина ЭТО форум тут (я смею надеятся) в спорах рождается истина и не надо показывать как богат наш язык Тема богатства языка понравилась. На что я должен ответить - не понял, поэтому отвечу на то, что хочется :) Если речь идёт об изменении драйвера - то это ни на что не влияет, если ты, конечно, не используешь спецефичные именно для этого драйвера классы/методы. Но в таком случае, при смене драйвера всё равно всё придётся менять. Изменение java.sql.ResultSet - это из области научной фантастики. Если это произойдёт, ВСЕМ разработчикам драйверов придётся переписать свой код. И как следствие - всем, кто эти драйвера использует, если вообще возникнет желание переходить на новую версию java с новым резалСетом. Единственное, что можно ожидать - появляение интерфейса расширяющего ResultSet. Но это ни как не повлияет на уже написанный код, если не возникнет необходимость использовать фичи нового интерфейса. Если же такая необходимость возникнет, то код всё равно надо будет менять и доставлять клиенту, так что проблем ноль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 11:11 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2152535]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 321ms |

| 0 / 0 |
