powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно сделать массив классов?
19 сообщений из 19, страница 1 из 1
Возможно сделать массив классов?
    #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
Возможно сделать массив классов?
    #37799424
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас субъективное мнение о наследовании. Какой смысл в таких наследниках, если в статике отсутствует полиморфизм? Там нет никакого переопределения методов. Там прямое статическое связывание во время компиляции.
почему вы не хотите создать объекты?
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #37799477
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczпочему вы не хотите создать объекты?
Я хочу.
avp.mk(Но иногда объекты будут нужны)
Но не для того чтобы посмотреть константу (значения которой для всех подклассов отличаются)
Если не понятно, я привёл не весь код класса, а только одну строчку относящуюся к вопросу.
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #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
Возможно сделать массив классов?
    #37799539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkХотелось бы обращаться к статическим полям\методам ("переопределённым" - redefined) не мусоря объектами. (Но иногда объекты будут нужны)
Неясно, что ты на этом экономишь.
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #37799561
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложно подобрать оптимальное решение, не зная зачем всё это нужно. Приведите use-case использования вашего кода и тогда можно найти к нему решение.
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #37799573
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне почему-то кажется что тут банальный enum нужен:)
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #37799577
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никмне почему-то кажется что тут банальный enum нужен:)
Да, enum как реестр для наследников тоже не плохой вариант.
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #37799603
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, забыл ник!

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

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

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

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

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

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

+1

ordinal использовать напрямую очень плохо.
...
Рейтинг: 0 / 0
Возможно сделать массив классов?
    #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
Возможно сделать массив классов?
    #37799694
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объекты в стеке - круто.
Тексты на вход вместо того чтобы перейти по индексу в массиве - тоже.

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

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

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


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