Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Рефлексия, запуск метода из загруженного класса


Автор: maxlab 14.5.2008, 19:45
Здравствуйте!
Код

                   Class Application = Class.forName("b2006.module.Application");
 154:           Method m = Application.getMethod("doIt", null);
                   Object oApp = Application.newInstance();
 156:           m.invoke(oApp, null);
 


все работает, но при компиляции вываливаются варнинги след.содержания
Compiling 1 source file to /media/disk/Loader/build/classes
/media/disk/Loader/src/loader/Loader.java:154: warning: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Class for a varargs call
cast to java.lang.Class[] for a non-varargs call and to suppress this warning
            Method m = Application.getMethod("doIt", null);
/media/disk/Loader/src/loader/Loader.java:156: warning: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
            m.invoke(oApp, null);
Note: /media/disk/Loader/src/loader/Loader.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 warnings
что я делаю не так? И как победить?

Автор: Kangaroo 14.5.2008, 19:51
Цитата(maxlab @  14.5.2008,  19:45 Найти цитируемый пост)
что я делаю не так? И как победить? 

Передавай последними параметрами не null, а пустые массивы.

Автор: maxlab 14.5.2008, 19:55
Цитата(Kangaroo @ 14.5.2008,  19:51)
Передавай последними параметрами не null, а пустые массивы.

Спасибо, сейчас попробуем smile

Автор: LSD 14.5.2008, 22:44
1. Один вариант решения уже подсказал компилятор:
Цитата
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning

2. Если у тебя метод не принимает аргументов, то ничего передавать в varargs метод не нужно:
Код

Method m = Application.getMethod("doIt");

а вот если ты хочешь один параметр который равен null, то тогда тебе обязательно нужно привести его к java.lang.Object иначе тебя компилятор неправильно поймет.

Автор: maxlab 15.5.2008, 09:46
Спасибо всем. Через пустые массивы сработало...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)