powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметризация / наследование от ArrayList
5 сообщений из 5, страница 1 из 1
Параметризация / наследование от ArrayList
    #38574552
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Вопрос следующий:

Есть параметризированный абстрактый класс MatrItem, который наследуется от ArrayList'a (список, так сказать, матрешек).
Далее от MatrItem наследуются соотв большая, средняя и малая матрешка. При чем параметризируются так, чтобы в средней например могла быть только малая, в большой только средняя, в общем тут видно. кода не много.

Но вот почему, когда в Runner'e я пишу добавить в среднюю матрешку большую, компилятор не предупреждает об ошибке? и добавляет?
Я чего-то не так делаю?

код под спойлером.

Заранее спасибо за ответы! =)


Код: java
1.
 abstract class MatrItem<T> extends ArrayList {}



Код: java
1.
 class BigMatrioshka extends MatrItem<MiddleMatrioshka>{}



Код: java
1.
public class MiddleMatrioshka extends MatrItem<SmallMatrioshka>{}



Код: java
1.
 class SmallMatrioshka extends MatrItem{}



Код: java
1.
2.
3.
4.
5.
6.
public class Runner {
public static void main(String[] args) {
MiddleMatrioshka mm = new MiddleMatrioshka();
mm.add(new BigMatrioshka()); //вот тут компилятор ничего не выдает и сопокойно все добавляет
}
}


...
Рейтинг: 0 / 0
Параметризация / наследование от ArrayList
    #38574557
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
add() это метод ArrayList. Параметри типа ArrayList у вас не указан. Значит он Object. Значит параметр метода add() тоже Object.
Значит туда можно писать что угодно.
Код - полный ахтунг, даже если вы просто учитесь.
...
Рейтинг: 0 / 0
Параметризация / наследование от ArrayList
    #38574576
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

задача у меня на разбор текста(параграфы, листинги,предложения и тд.), с матрешками только пример.
Думал сделать через параметризацию
Может подскажите как сделать грамотно? Хотел бы, все-таки попробовать через параметризацию.
А если АrrayList параметризировать, то требуется писать иерархию с наследованием. можно это как-то обойти?
...
Рейтинг: 0 / 0
Параметризация / наследование от ArrayList
    #38574586
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наследование не единственный способ переиспользовать код. Есть ещё и композиция.
Наследование нарушает в вашем случае и инкапсуляцию и LSP ( http://en.wikipedia.org/wiki/Liskov_substitution_principle)
То что вы хотите с генериками делается как
Код: java
1.
class MyList<T> extends AbstractList<T>
...
Рейтинг: 0 / 0
Параметризация / наследование от ArrayList
    #38574594
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да, собственно, с помощью композиции я и хотел делать.

Просто параметризация упрощает, на мой взгляд жизнь, в данном месте. ибо не надо в классе с большими матр создавать лист средних и тд. просто параметризируем и засовываем туда уже только то что можно. А в MatrItem создаем необходимые методы, которые чуть-что можно переопределить, под конкретное использование.

Может я в чем-то и не прав, но идея показалась интересной мне.

Спасибо за ответ!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметризация / наследование от ArrayList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]