![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 1 Всего: 5 |
Есть большая алгебраическая функция, которая может редко меняться.
Есть задача вставить эту функцию в java в тело метода и скомпилировать. Помнится в C это можно было сделать просто вставлением текста из файла через макрос... Или может в java можно создать скомпилированный метод явно задав "шапку" и тело метода? -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Andrey1
Есть возможность подгружать и выполнять ее как скрипт (java 1.6) |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 1 Всего: 5 |
А шапку с объявлением переменных, которые используются в функции (массив и скаляры), этот механизм позволяет задавать? Думаю должен, если этот метод будет в последствии полноценным... -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| alexadr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: 4 Всего: 4 |
будет поще своим классдоадером перезагружать некий класс в котором будет ментся работа того или иного метода
|
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Andrey1
Вообще эти методы (скрипт, подгрузка нужной реализации класса) -- для смены алгоритма рантайм, мы, кажется, с этим поторопились Тебе это нужно или приложение в любом случае будет пересобираться после изменения алгоритма? |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 1 Всего: 5 |
Да можно и так, и так. Вопрос в том, как скомпилировать эту функцию в java функцию... -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Еще вот эту тему посмотри.
|
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Что-то я не понимаю. Если с компиляцией на С не было проблем, а на Java можно просто скомпилировать класс и подсунуть вместо старого, то в чём проблема? Просто описываешь класс своей алг.функции, компилируешь и всё. Все переменные - поля класса. Задаются либо по отдельности сеттерами, либо через метод, принимающий массив (лучше второе, т.к. внешний код менять не придётся, если он не сам придумывает переменные и их число может варьироваться). Метод вычислений имеет стандартное имя (например, doWork), не принимает параметров и возвращает всегда BigDecimal (для мат расчётов оно лучше, но можно и дабл возвращать). Вот и всё. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 1 Всего: 5 |
Спасибо. Да, идея заюзать Beanshell нова и интересна. -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Выглядит, как классическая задача для наследования. Создаёте класс, в котором описываете всё, что нужно, а Вашу функцию делаете абстрактной. После чего определяете сколько угодно классов-наследников, в которых эта функция реализуется по-разному. |
|||
|
||||
![]()
|
| Правила форума "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. |