powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамические загружаемые методы с параметрами?
25 сообщений из 39, страница 1 из 2
Динамические загружаемые методы с параметрами?
    #32723150
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс который загружает другой класс из Таблицы в виде массива байтов. В то же время он превращает этот класс в объект Class с помощью defineClass() и вызывает main метод.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
defineClass(null, bytes, 0, bytes.length);
....................
ResultSet rs = stm2.executeQuery("Select kode From data where Kod = 01");
        while (rs.next()) {
          System.out.println(rs.getString(3));
        }
        byte byteslast[] = bytes;
        Object object = clazz.newInstance();
        java.lang.reflect.Method m = xxx.getDeclaredMethod("main", null);

Class xxx = loader.LoadClass(byteslast);
Class clazz = Class.forName(xxx.getName(), true, ClassLoader);
m.invoke(object, null);
А вот код вызываемого класса:
Код: plaintext
1.
2.
3.
4.
5.
6.
public class TestModule {
  public static void main() {
    System.out.println("Hi, I'm Dynamic running file");
  }
}

Все ок. Теперь вопрос:
Только что был загружен main метод класса. Но я допустим хочу не main метод а какой нибудь свой метод + с параметрами запустить. К примеру:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 class procedure1 {
     public String ShowMessage(String getString, int i) {
       System.out.println("This is string: " + getString);
       getString = getString + Integer.toString(i);
       return getString;
     } 
}
т.е программа должна:
1. Вызывать метод.
2. Передавать значение методу.
3. Метод должен вернуть значение.
Как такое можно реализовать?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32723184
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1, 2, 3 - порядок не такой.
Читай про reflecting.
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32723409
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
1, 2, 3 - порядок не такой.
Читай про reflecting.
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32723833
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не помогает. Кто нибудь подскажите. Пожалуйста!!!
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32724218
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вызывает вопросы в описании метода getDeclaredMethod(java.lang.String, java.lang.Class[])?

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725174
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
getDeclaredMethod или getMethod - первый параметр это имя метода, а второй параметр Class или Jbject не понятная фигня. Как передавать метод с параметрами?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725191
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Method getDeclaredMethod(String name, Class[] parameterTypes);
что же здесь неясного???
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725298
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Method m = xxx.getMethod("gr", ?);
Что вместо ? вставить? Параметры метода как передать,?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725412
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VortexCorbaMethod m = xxx.getMethod("gr", ?);
Что вместо ? вставить? Параметры метода как передать,?
к примеру:
Код: plaintext
1.
2.
3.
4.
Class argTypes[] = {java.lang.String.class};
Class args[] = {"хрень"};
Method m = xxx.getMethod("gr",argTypes);
 /*Obj - созданный объект класса чей метод вызываем*/ 
m.invoke(Obj,args);
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725455
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patch -> Object args[] = {"хрень"};
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725529
SOMNAMBULA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение темы...

А как часто подобный способ вызова методов используется в реальных системах и как сильно он влияет на производительность (если влияет)? Может, кто эксплуатирует подобные системы и может поделиться опытом?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725545
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
Class argTypes[] = {java.lang.String.class};
Class args[] = {"хрень"}; - 
Method m = xxx.getMethod("gr",argTypes);
1.Class argTypes[] = {java.lang.String.class}; - означает что параметр будет строковый или сам метод возвращает строку?
2.Если у меня несколько параметров, допустим:
public String m(String getstring, boolean t, int k) {
...............
return getstring;
}
Что тогда делать?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725588
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я писал так:
Код: plaintext
1.
Class argTypes[] = {java.lang.String.class, java.lang.boolean.class, java.lang.Integer.class};
А он пишет такую ошибку:
Код: plaintext
1.
java.lang.NoSuchMethodException....

Что это могло означать?
Нет такого метода? Странно, есть же метод
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725594
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь пишет:
Код: plaintext
1.
java.lang.IllegalArgumentException: argument type mismatch
Что это означает?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725613
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я сегодня видел красивую картинку в инете.
Тебе она тоже понравилась?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725647
SOMNAMBULA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разницу между int и java.lang.Integer улавливаешь!?

java.lang.boolean - это что за класс такой?

Если я не ошибаюсь, то для работы подобным способом нужны методы с параметрами, которые являются экземплярами некоторых классов (т.е. наследуемых от java.lang.Object).

т.е. тебе нужен метод типа:

Код: plaintext
public String m(String, Boolean, Integer);

если перепишешь метод на такое определение, то заработает, я думаю...

P.S. У тебя нет документации или просто лень читать ????? :-\
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725673
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int.class,boolean.class чем не устраивают???
согласен с SOMNAMBULA документацию читать полезно )
Удачи.
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725711
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня нет документации. Вот и парюсь. Есть книжка, ни..я нету там. А в инете че то нету. Есть но все на англ. Немношко не понятно(Извеяюсь за 3 по англ, не родной язык, прощается).
Че за херня. вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Class argTypes[] = {String.class};    
Или как его хафик обявлять? 

......................
        Class xxx = loader.LoadClass(byteslast);
        Class clazz = Class.forName(xxx.getName(), true, loader);
        Class argsb[] = {clazz};        
        Object object = clazz.newInstance();
        Method gr = xxx.getMethod("gr", argTypes);
.......................
Что то нито, где ошибка?
А вот код метода которого он то и вызывает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
public class procedure_02 {
  public String gr(String getstr)
    {
      System.out.println("Hello from main method! " + getstr);
      return getstr;
    }
}


Что ни так? Нахрен эти методы долбанные, уже запарился.
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725728
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOMNAMBULAРазницу между int и java.lang.Integer улавливаешь!?

java.lang.boolean - это что за класс такой?

Если я не ошибаюсь, то для работы подобным способом нужны методы с параметрами, которые являются экземплярами некоторых классов (т.е. наследуемых от java.lang.Object).
...
P.S. У тебя нет документации или просто лень читать ????? :-\

Cамое забавное, что Сlass для простых типов тоже определён. Иначе как по рефлекшину вызвать smth.setBoolean(true) ? :)
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725743
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скачай доку здесь и не парься
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725789
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во мля. Чезхерня
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725798
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А че документация самая крутая что есть про Жава? Типа там описано все чего нет в книжках и статьях?
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725810
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VortexCorba Class xxx = loader.LoadClass(byteslast);
Class clazz = Class.forName(xxx.getName(), true, loader);
Method gr = xxx.getMethod("gr", argTypes);

сlazz.getMethod тоже не работает?
Тогда странно.
Скорее всего у тебя сохранена не та версия класса с методом gr :)
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725825
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VortexCorbaА че документация самая крутая что есть про Жава? Типа там описано все чего нет в книжках и статьях?

Конечно. Книжки это переписанные javaDoc's в популярной форме.

А ещё Technical Articles & Tips можно почитать, если не чем заняться :)
...
Рейтинг: 0 / 0
Динамические загружаемые методы с параметрами?
    #32725892
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
сlazz.getMethod тоже не работает?
Тогда странно.
Скорее всего у тебя сохранена не та версия класса с методом gr :)

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


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