|
|
|
Параметризация / наследование от ArrayList
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вопрос следующий: Есть параметризированный абстрактый класс MatrItem, который наследуется от ArrayList'a (список, так сказать, матрешек). Далее от MatrItem наследуются соотв большая, средняя и малая матрешка. При чем параметризируются так, чтобы в средней например могла быть только малая, в большой только средняя, в общем тут видно. кода не много. Но вот почему, когда в Runner'e я пишу добавить в среднюю матрешку большую, компилятор не предупреждает об ошибке? и добавляет? Я чего-то не так делаю? код под спойлером. Заранее спасибо за ответы! =) Код: java 1. Код: java 1. Код: java 1. Код: java 1. Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 17:54 |
|
||
|
Параметризация / наследование от ArrayList
|
|||
|---|---|---|---|
|
#18+
add() это метод ArrayList. Параметри типа ArrayList у вас не указан. Значит он Object. Значит параметр метода add() тоже Object. Значит туда можно писать что угодно. Код - полный ахтунг, даже если вы просто учитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 17:58 |
|
||
|
Параметризация / наследование от ArrayList
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, задача у меня на разбор текста(параграфы, листинги,предложения и тд.), с матрешками только пример. Думал сделать через параметризацию Может подскажите как сделать грамотно? Хотел бы, все-таки попробовать через параметризацию. А если АrrayList параметризировать, то требуется писать иерархию с наследованием. можно это как-то обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 18:11 |
|
||
|
Параметризация / наследование от ArrayList
|
|||
|---|---|---|---|
|
#18+
Наследование не единственный способ переиспользовать код. Есть ещё и композиция. Наследование нарушает в вашем случае и инкапсуляцию и LSP ( http://en.wikipedia.org/wiki/Liskov_substitution_principle) То что вы хотите с генериками делается как Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 18:22 |
|
||
|
Параметризация / наследование от ArrayList
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, собственно, с помощью композиции я и хотел делать. Просто параметризация упрощает, на мой взгляд жизнь, в данном месте. ибо не надо в классе с большими матр создавать лист средних и тд. просто параметризируем и засовываем туда уже только то что можно. А в MatrItem создаем необходимые методы, которые чуть-что можно переопределить, под конкретное использование. Может я в чем-то и не прав, но идея показалась интересной мне. Спасибо за ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 18:30 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38574594&tid=2127585]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
136ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 432ms |

| 0 / 0 |
