Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Создание класса во время выполнения |
Автор: hellRaven 20.10.2008, 12:53 |
Посоветуйте, как во время выполнения программы создать/унаследовать новый класс по параметрам (название, количество каких либо переменных) прочитанных с формы. В итоге должен быть сгенерирован новый класс и данные о нем нужно добавить в меню, для его использования Например: Есть класс геометрической фигуры, на его основе во время выполения мы создаем новый класс, указав количество и координаты точек. В итоге появляется новая фигура, которую мы можем нарисовать, выбрав из меню... |
Автор: mbasil 20.10.2008, 13:08 | ||||
1. Для той задачи, которую вы нарисовали в
2. Задачу динамического создания классов можно решить, генерируя исходный код, компилировать его из программы (в JDK1.6 можно напрямую общаться с компилятором), а потом грузить их по имении. При этом все классы должны реализовывать один интерфейс или должны быть порождены от одного предка.
Только делать это надо тогда, когда вы полностью разобрались с ООП и стандартные решения Вам не подходят. |
Автор: hellRaven 20.10.2008, 14:43 | ||||||
Спасибо, буду пробовать и разбираться, но
я бы рад создавать новый обьект, но преподаватель требует именно создание нового класса ![]()
можно про это поподробнее? |
Автор: hellRaven 20.10.2008, 16:41 |
Моего преподавателя с прошлого семестра вспоминают "добрым" словом за то, что но не принимает лабы, которые сделаны не так, как по его мнению они должны быть сделаны. Поэтому я сразу же уточнил, действительно ли надо создавать новый класс. Оказалось что надо... но конкретно что-то советовать и объяснять не стал, а сразу отправил за книжки, скорее потому что он больше с++/с# гуру а с Java не очень дружит... В книжках нашел упоминание о reflection но пока не вчитывался. Посоветуйте хотябы, в каком направлении копать... ![]() |
Автор: powerOn 20.10.2008, 18:22 |
Может класс создать и нужно, но не во время выполнения? |
Автор: susanin 20.10.2008, 18:33 |
можно попробовать создать новый класс в процессе выполнения с помощью механизма отражения... |
Автор: mbasil 21.10.2008, 08:49 |
Позвольте уточнить. Создавать класс во время выполнения можно, но эта задача совсем непростая. Использовать этот подход нужно в исключительных случаях - такой подход не является повседневным для разработчика. Он неэффективен и приведет к появлению хаоса в приложении. Удивительно, что "гуру" в с# предлагает начинающему такой подход - сам то он делал это ? Еще можно было бы представить, что "гуру" в С++ не понимает, во что пытается "окунуть" того, кому дал такую задачку. Но что касается "гуру" в С#, то это может означать что он либо хочет "завалить" на ней, либо слово "гуру" к нему не применимо. |
Автор: Keyo 21.10.2008, 11:07 |
нда... вот что заставляют делать детей в институте... а потом удивляемсо... ![]() |
Автор: hellRaven 21.10.2008, 19:20 | ||
![]() Задача действительно была завальная, мольбами всей группы добились ее упрощения ![]() Спасибо за ответы P.S. и мне даже интересно стало, если это так неэффективно то для каких целей нужно это использовать? и может всетаки пример ктонибудь продемонстрирует? ![]() |
Автор: COVD 21.10.2008, 20:14 | ||
Ну как же. Если программа сама пишет классы, то программист уже не нужен. Достаточно написать одно окошко, а дальше программа уже сама пусть классы создает и удаляет в зависимости от того, что пользователю надо. А если Spring использовать, то и окошко создавать не надо - хмл файла достаточно. ![]() |