![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| zss |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Что-то целый день мучаюсь и уже 10 раз переделываю
Есть некий класс. Необходимость в нем возникла из-за того, чтоб хранить данные в той последовательности в которой они были добавлены
Есть абстрактный класс, котоый содержит массив объектов и массив данных (имена)
Есть наследники, в которых эти данные различаются
Тоесть любой наследник содержит собственное описание и может являтся контейнером объектов. Т.к. в DoubleArray реализована вся функциональность доступа к данным, то хотелось бы одним махом заполнить его данными (arrayKey & arrayName) Вопрос: 1. можно ли так инициализировать массивы абстрактного класса. 2. Если использовать вместо массивов DoubleArray, то как его инициализировать |
||||||
|
|||||||
| NotGonnaGetUs |
|
|||
|
Unregistered |
Кто-то из нас ничего не понял.
1. В AbstractClass arrayKey и arrayName объявлены как private. private static String[] arrayKey = {"Aaa", "Bbb", "Ccc"}; - инициализирует собственную переменныую в классе Class, причём статик. 2. private static DoubleArray doubleArray = new DoubleArray(); static { doubleArray.addValue("Aaa", "aaaaa"); doubleArray.addValue("Baa", "bbbbb"); ... } или добавь в doubleArray метод addValues(String[] keys, String[] names) и реализуй. Если нужно "не статик" поле, то инициализируй его в конструкторе класса. off: DoubleArray - массив объектов Double. Class - библиотечный java класс (java.lang.Class) |
|||
|
||||
| Tamerlann |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: 2 Всего: 2 |
А можно поподробнее, зачем вообще понадобился такой DoubleArray?
Это сообщение отредактировал(а) Tamerlann - 18.2.2005, 18:35 --------------------
http://timursdev.blogspot.com/ |
|||
|
||||
| zss |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Это я просто для примера привел
Хорошо - объясню подробнее. Необходимо создать классы, в которые являются контейнерами объектов. Но помимо этого содержат информацию о себе (каждый класс разную). Информация представляет собой строки ключ-значение (Properties не подходит, т.к. хранит данные в произвольном порядке, а надо в том порядке, в котором они были добавлены) Данные: ключ - значение должны быть private, а доступ к ним происходит по индексу (для удобства анализа). Для получения значения используется ключ. А для получения ключа - индекс. Также существует возможность parseKey для получения индекса ключа (тоже для удобства). Если использовать массивы строк, то для каждого класса надо было бы писать методы доступа к данным и их инициализацию. Поэтому я написал класс DoubleArray, который все это реализует, но инициализацию его и часть методов приходится повторять в каждом классе. Поэтому я и спрашивал как правильно написать базовый класс, чтоб в нем было реализовано лишь добавление данных для описания, а инициализация происходила в конструкторе базового класса. Пример (два разных класса)
А методы доступа данных реалихованы в базовом классе. Кроме того они являются контейнерами |
||||||
|
|||||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
list будет тоже доступен сабклассам. -------------------- |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Domestic Cat, прочитал книгу, которую ты рекомендовал, но такую инициализацию встречаю впервые Спасибо - попробую |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Кстати, Domestic Cat, а если нужно, что массивы строк были static - так не получиться.
Ну чтобы к ним можно было обращаться не создавая объект |
|||
|
||||
| NotGonnaGetUs |
|
|||
|
Unregistered |
static'и не наследуются. |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Тоесть придется все-таки создавать объект
Мне просто хотелось описание доставать не создавая объект, а использовать его как контейнер - создав Это сообщение отредактировал(а) zss - 18.2.2005, 22:32 |
|||
|
||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Это похоже на Composite Pattern |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |