Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно сделать массив классов? / 19 сообщений из 19, страница 1 из 1
17.05.2012, 16:35:25
    #37799396
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
У класса есть куча наследников. Я хочу их всех записать в массиве (или где угодно, лишь бы можно было обратиться по индексу). Не создавая объектов т.е. не так :

Код: java
1.
2.
3.
public class TexturePorod extends Region {
    public static final TexturePorod[] ALL = {new Alevrolit(), new Gavrelit()};
}



а как-то так:
Код: java
1.
2.
3.
public class TexturePorod extends Region {
    public static final ВотЧтоТутНаписать[] ALL = {Alevrolit, Gavrelit};
}



Получилось что-то похожее:
Код: java
1.
2.
3.
public class TexturePorod extends Region {
    public static final Class[] ALL = {Alevrolit.class, Gavrelit.class};
}


В принципе c этим уже можно работать. Но это не очень удобно.
Хотелось бы обращаться к статическим полям\методам ("переопределённым" - redefined) не мусоря объектами. (Но иногда объекты будут нужны)
...
Рейтинг: 0 / 0
17.05.2012, 16:43:55
    #37799424
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
у вас субъективное мнение о наследовании. Какой смысл в таких наследниках, если в статике отсутствует полиморфизм? Там нет никакого переопределения методов. Там прямое статическое связывание во время компиляции.
почему вы не хотите создать объекты?
...
Рейтинг: 0 / 0
17.05.2012, 16:58:01
    #37799477
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Blazkowiczпочему вы не хотите создать объекты?
Я хочу.
avp.mk(Но иногда объекты будут нужны)
Но не для того чтобы посмотреть константу (значения которой для всех подклассов отличаются)
Если не понятно, я привёл не весь код класса, а только одну строчку относящуюся к вопросу.
...
Рейтинг: 0 / 0
17.05.2012, 17:08:08
    #37799515
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Добрый день, avp.mk!

> Получилось что-то похожее:
>
> public class TexturePorod extends Region {
> public static final Class[] ALL = {Alevrolit.class, Gavrelit.class};
> }
> В принципе c этим уже можно работать. Но это не очень удобно.

Вы понимаете, что количество наследников нельзя предугадать?
Какая, вообще, цель всего этого? Мне думается, у Вас ошибка где-то на
предыдущем шаге.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.05.2012, 17:16:03
    #37799539
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mkХотелось бы обращаться к статическим полям\методам ("переопределённым" - redefined) не мусоря объектами. (Но иногда объекты будут нужны)
Неясно, что ты на этом экономишь.
...
Рейтинг: 0 / 0
17.05.2012, 17:20:03
    #37799561
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Сложно подобрать оптимальное решение, не зная зачем всё это нужно. Приведите use-case использования вашего кода и тогда можно найти к нему решение.
...
Рейтинг: 0 / 0
17.05.2012, 17:24:59
    #37799573
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
мне почему-то кажется что тут банальный enum нужен:)
...
Рейтинг: 0 / 0
17.05.2012, 17:26:05
    #37799577
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
забыл никмне почему-то кажется что тут банальный enum нужен:)
Да, enum как реестр для наследников тоже не плохой вариант.
...
Рейтинг: 0 / 0
17.05.2012, 17:33:23
    #37799603
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Добрый день, забыл ник!

> мне почему-то кажется что тут банальный enum нужен:)

Да, у нас так сделано.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.05.2012, 17:38:31
    #37799621
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Вопрос, пожалуй, можно поставить так - "Можно-ли в джаве создать массив с сылками не в хип, а в статический контекст?".

GKS_SamaraВы понимаете, что количество наследников нельзя предугадать?
Мне не нужно предугадывать всех. Каких напишу в фигурных скобках - тех достаточно. Все классы пишу я.
Не ищите проблему там, где её нет.

GKS_SamaraКакая, вообще, цель всего этого?
Создавать (и не только) разные подклассы в зависимости от данных взятых из БД.

GKS_SamaraМне думается, у Вас ошибка где-то на предыдущем шаге.
Посоветуйте существующие решение цель я написал.
...
Рейтинг: 0 / 0
17.05.2012, 17:42:33
    #37799635
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mkВопрос, пожалуй, можно поставить так - "Можно-ли в джаве создать массив с сылками не в хип, а в статический контекст?"
Объекты размещаются в куче и на стеке. Что за "статический контекст" ?
Отказываейтесь от статики. Она в случае наследования точно не нужна.
...
Рейтинг: 0 / 0
17.05.2012, 17:43:10
    #37799638
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
забыл никмне почему-то кажется что тут банальный enum нужен:)
К enum'у можно обратиться по индексу?
...
Рейтинг: 0 / 0
17.05.2012, 17:46:53
    #37799645
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mkзабыл никмне почему-то кажется что тут банальный enum нужен:)
К enum'у можно обратиться по индексу?
Специально для тебя компиллятор любезно генерит авто-метод public static EnumClass[] values()
...
Рейтинг: 0 / 0
17.05.2012, 17:48:46
    #37799648
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mkК enum'у можно обратиться по индексу?
values()
только зачем вам по индексу?? Это очень странное желание.
...
Рейтинг: 0 / 0
17.05.2012, 17:53:16
    #37799656
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Blazkowicz,

+1

ordinal использовать напрямую очень плохо.
...
Рейтинг: 0 / 0
17.05.2012, 17:53:19
    #37799657
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Добрый день, avp.mk!

> Создавать (и не только) разные подклассы в зависимости от данных взятых
> из БД.

Велосипед называется JPA/Hibernate. Ну или iBatis.

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="...",discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="...")

Или можно самому сделать фабрику (да хоть в виде enum'а)- ей на вход имя
класса- она объект.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.05.2012, 18:13:15
    #37799694
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
Объекты в стеке - круто.
Тексты на вход вместо того чтобы перейти по индексу в массиве - тоже.

Enum - подумаю, не нравиться что им нельзя расширить другой класс.

Пока склоняюсь к мнению просто сделать простым (пустым) конструктор по-умолчанию и создавать при помощи него только объекты в массиве и параметризованный...
...
Рейтинг: 0 / 0
17.05.2012, 21:37:46
    #37799908
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mkПока склоняюсь к мнению просто сделать простым (пустым) конструктор по-умолчанию и создавать при помощи него только объекты в массиве и параметризованный...
Передумал
Большой Синий Китordinal использовать напрямую очень плохо.
Можно узнать почему?
...
Рейтинг: 0 / 0
17.05.2012, 23:25:08
    #37799987
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно сделать массив классов?
avp.mk,

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


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