powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в java загрузить функционал класса из файла.
25 сообщений из 69, страница 1 из 3
Можно ли в java загрузить функционал класса из файла.
    #34381286
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ли я в java динамически загрузить (скомпилировать?) некий класс, который описан в неком файле, при том что он наследует от имеющихся в базе классов? Как называется эта технология.

Мне нужно загрузить не данные экземпляра класса, а именно новый функционал.

Хочу разделить код ядра и прикладного уровня. Ядро не меняем, а прикладные объекты меняем часто и перезагружаем их функционал из класса.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381297
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как называется - не знаю, но точно можно. Есть где-то кусок кода, где это реализовно, лень искать. А как грузить shared objects не интересует? Может, это лучше подходит?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381306
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinМогу ли я в java динамически загрузить (скомпилировать?) некий класс, который описан в неком файле, при том что он наследует от имеющихся в базе классов? Как называется эта технология.

Мне нужно загрузить не данные экземпляра класса, а именно новый функционал.

Хочу разделить код ядра и прикладного уровня. Ядро не меняем, а прикладные объекты меняем часто и перезагружаем их функционал из класса.
Не очень понятно, если честно. Какая-то система плагинов или что? В принципе можно смотреть в сторону рефлекшна, если это то, что я понял из Вашего описания.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381315
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reflections
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381325
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточняю.
Например у меня в проекте есть класс А.
Мне нужно динамически загрузить новый класс.
Class B:A
{
function print();
};

Чтобы если я потом где-то в новом классе С напишу:
X=new B;
чтобы у меня создался класс B.

Также мне может понадобиться перезагрузить уже загруженный класс, например класс А.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381331
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixinуточняю.
Например у меня в проекте есть класс А.
Мне нужно динамически загрузить новый класс.
Class B:A
{
function print();
};

Чтобы если я потом где-то в новом классе С напишу:
X=new B;
чтобы у меня создался класс B.

Также мне может понадобиться перезагрузить уже загруженный класс, например класс А.
Опять непонятно... во-первых, "динамическая загрузка класса" и "X=new B;" несовместимы по определению (на то она и динамическая, что позволяет использовать еще неизвестный на стадии компиляции класс), во-вторых лучше опишите high-level design. То есть - что хотите получить . Какая конечная цель.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381386
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший
Опять непонятно... во-первых, "динамическая загрузка класса" и "X=new B;" несовместимы по определению (на то она и динамическая, что позволяет использовать еще неизвестный на стадии компиляции класс), во-вторых лучше опишите high-level design. То есть - что хотите получить . Какая конечная цель.

Еще раз:

Например у меня в проекте есть класс А.

1. Динамически загружаю:
Class B:A
{
function print();
};

2. Динамически загружаю:
Class C:A
{
function print() {R=New B;} //Вот здесь должен создаться новый, загруженный класс b.
};
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381429
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin Зашедший
Опять непонятно... во-первых, "динамическая загрузка класса" и "X=new B;" несовместимы по определению (на то она и динамическая, что позволяет использовать еще неизвестный на стадии компиляции класс), во-вторых лучше опишите high-level design. То есть - что хотите получить . Какая конечная цель.

Еще раз:

Например у меня в проекте есть класс А.

1. Динамически загружаю:
Class B:A
{
function print();
};

2. Динамически загружаю:
Class C:A
{
function print() {R=New B;} //Вот здесь должен создаться новый, загруженный класс b.
};
Очень рекомендую все-таки почитать Reflection. Кратко по сути: есть некий класс Class, воплощающий в себе метаинформацию о конкретном классе, его реализации. Он позволяет:
- просматривать списки методов
- вызывать методы по имени
- создавать новые инстансы заранее неизвестного класса
- менять содержимое полей
и т.д.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381434
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Туториал, как всегда, находится здесь .
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381465
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- а чем Вас не устраивают интерфейсы?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 interface  My{
     public   void  method();
}

 class  A  implements  My{
     public   void  method(){...}
}

 class  B  implements  My{
     public   void  method(){...}
}

...

где-то где необходимо:

My m=(My) Class .forName("mylib.A").newInstance();
m.method();
...
m=(My) Class .forName("mylib.B").newInstance();
m.method();
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381488
angro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(0) о боже и здесь ты.
ClassForName тебе нужен?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381492
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясняю еще раз суть.

Я хочу узнать просто могу ли я вызвать метод по имени просто вот так x.print()
А не так: x.callbyname("print")

Т.е. позволяет ли такое java?

Интерфейсы меня не устраивают, т.к. я не хочу менять ядро (базовый класс).
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381495
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin
Интерфейсы меня не устраивают, т.к. я не хочу менять ядро (базовый класс).


1. что мешает базовому классу реализовывать общий с подгружаемыми классами интерфейс?

2. что мешает подгружаемым классам быть наследниками от базового класса?

Fixin
Я хочу узнать просто могу ли я вызвать метод по имени просто вот так x.print()
А не так: x.callbyname("print")

Т.е. позволяет ли такое java?

- см. пример выше, по моему в нем видно, что позволяет.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381514
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
1. что мешает базовому классу реализовывать общий с подгружаемыми классами интерфейс?

2. что мешает подгружаемым классам быть наследниками от базового класса?


Потому что, когда я разрабатываю базовый класс, я не знаю, что у объекта может появиться например метод print.

Возможна ситуация, когда я обрабатываю список объектов класса Basic (базовый), и у тех, у которых есть метод Print (или у объектов определенного типа), я должен его вызвать этот метод.

Я хочу чтобы код был максимально прост и fun, чтобы не напрягать программиста, который будет писать надстройку над ядром. Т.е. если он понял, что перед ним не Basic, а Printable, чтобы он мог вызвать метод этого объекта.

Можно конечно пойти через преобразование типа (можно?) но не проще ли вызвать метод по имени?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381524
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin
Потому что, когда я разрабатываю базовый класс, я не знаю, что у объекта может появиться например метод print.

- а как Вы "потом" узнаете что именно этот, неизвестый заранее метод, надо вызывать? На этот случай опытные товарищи уже посоветовали Вам Reflection API, который позволяет вызывать методы с заранее неизвестной сигнатурой.

Fixin
Возможна ситуация, когда я обрабатываю список объектов класса Basic (базовый), и у тех, у которых есть метод Print (или у объектов определенного типа), я должен его вызвать этот метод.

- Reflection API

Fixin
Я хочу чтобы код был максимально прост и fun, чтобы не напрягать программиста, который будет писать надстройку над ядром. Т.е. если он понял, что перед ним не Basic, а Printable, чтобы он мог вызвать метод этого объекта.

- интерфейсы. Можно без методов, а-ля java.io.Serialaizable
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381536
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окей. сложно ли выглядит вызов метода через reflection.api
Есть ли у класса событие, которое возникает, когда вызывается неизвестный метод?

Т.е. видите как просто можно написать: x.Print(), кстати Visual Basic так позволяет писать.

А как это будет выглядеть в Рефлекшн x.callbyname("Print")???
Или все же x.GetMethod("Print")();
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381542
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinПотому что, когда я разрабатываю базовый класс, я не знаю, что у объекта может появиться например метод print.


что за бред. Так не проектируют. Наследование раширяет функциональность и сужает тип, ты не должен думать о тех методах, которые могут быть у наследников, т.к. это их инкапсулированная бизнеслогика. Если тебе нужен метод, но ты не знаешь его реализации - сделай класс абстрактным и сделай абстрактный метод, который будет реализовываться в наследниках по-своему... и никаких рефлекшенов не надо
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381548
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y3u FixinПотому что, когда я разрабатываю базовый класс, я не знаю, что у объекта может появиться например метод print.


что за бред. Так не проектируют. Наследование раширяет функциональность и сужает тип, ты не должен думать о тех методах, которые могут быть у наследников, т.к. это их инкапсулированная бизнеслогика. Если тебе нужен метод, но ты не знаешь его реализации - сделай класс абстрактным и сделай абстрактный метод, который будет реализовываться в наследниках по-своему... и никаких рефлекшенов не надо

Я понимаю, что в классическом ООП так не проектируют, я хочу узнать, возможен ли выход за рамки этого классического ООП в джава, ведь ничего этому не мешает - здесь виртуальная машина а не компилятор. Надеюсь, моя позиция понятна?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381563
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможен, но не нужен... почему бы тебе не сменить язык прграммирования?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381572
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinОкей. сложно ли выглядит вызов метода через reflection.api
Есть ли у класса событие, которое возникает, когда вызывается неизвестный метод?

Т.е. видите как просто можно написать: x.Print(), кстати Visual Basic так позволяет писать.

А как это будет выглядеть в Рефлекшн x.callbyname("Print")???
Или все же x.GetMethod("Print")();

- документация (пакет java.lang.reflect)
- примеры
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381588
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinОкей. сложно ли выглядит вызов метода через reflection.api
Есть ли у класса событие, которое возникает, когда вызывается неизвестный метод?

Т.е. видите как просто можно написать: x.Print(), кстати Visual Basic так позволяет писать.

А как это будет выглядеть в Рефлекшн x.callbyname("Print")???
Или все же x.GetMethod("Print")();

ну я присоединюсь к предыдущим ораторам - почитайте таки reflection.
В Java мона все методы найти любого класса простым итерейшн.

2. Как уже правильно сказали - забудьте о классах. Классы - ето имплементация. Дизайн - ето интерфейсы, классы их просто имплементируют.
По хорошему у Вас не должно быть класса на котором Вы базируетесь, только интерфейсы, если конечно класс не имплементирует 82% Вашей функциональности.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34381679
IMil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FixinЯ понимаю, что в классическом ООП так не проектируют, я хочу узнать, возможен ли выход за рамки этого классического ООП в джава, ведь ничего этому не мешает - здесь виртуальная машина а не компилятор. Надеюсь, моя позиция понятна?
С такими запросами вам сюда или сюда . Возможно, найдете еще какой-нибудь динамически типизированный язык под JVM. Сама Java, увы, для решения вашей задачи требует громоздкого синтаксиса Reflection, так что выбирайте - учить новый язык или набивать мозоли на пальцах.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382267
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinПотому что, когда я разрабатываю базовый класс, я не знаю, что у объекта может появиться например метод print.

Я понимаю, что в классическом ООП так не проектируют, я хочу узнать, возможен ли выход за рамки этого классического ООП в джава, ведь ничего этому не мешает - здесь виртуальная машина а не компилятор. Надеюсь, моя позиция понятна?


1) Очевидно, вам нужна динамическая компилляция . Её можно достигнуть путём приминения классов com.sun.tools.javac.Main из бибиотеки tools . Возможно это вам поможет. Будьте осторожны! SUN не гарантирует совместимость кода этих классов с новыми версиями JDK. И вообще, эта часть библиотек слабо документирована.

2) Попробуйте скриптовать новый функционал. По имеющейся у меня информации, Java 6 уже должна иметь встроенную поддержку скриптовых языков ( PHP, Ruby, JavaScript, Jython ). Насколько эта информация достоверна - не берусь судить. Поищите сами. Ключевое слово для поиска - ScriptEngineManager .

3) И всё-таки напоследок я, как и все коллеги призову вас вернутся в лоно истинной церкви (просто еще раз внимательно почитать про reflection ), ибо 99% всех задач, связанных с разработкой плагинов и расширений для некого "ядра" обеспечиваются именно этой опцией. Если-же ваши плагины настолько разнородны, что выделить базовый интерфейс невозможно - тогда возникает вопрос о целесообразности такого ядра.

Успехов!
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382283
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не четал! Па сабжу: загрузчик классов свой написать.

У Хорстмана во втором томе описано. Они там из БеДе грузят класс. Ток класс скомпилен должен быть в байт код.

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382286
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
2) Попробуйте скриптовать новый функционал. По имеющейся у меня информации, Java 6 уже должна иметь встроенную поддержку скриптовых языков ( PHP, Ruby, JavaScript, Jython ). Насколько эта информация достоверна - не берусь судить. Поищите сами. Ключевое слово для поиска - ScriptEngineManager .

Jython Уё! Сан решили включить в SDK то, что уже фиг знает сколько лет написано?
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в java загрузить функционал класса из файла.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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