правильное использование Java Commons BeanUtils?

Привет, все еще изучаю некоторые концепции в java. извините, если это глупый вопрос

У меня класс в банке. Я загружаю его в свой путь к классу динамически, используя отражение. а затем я вызываю метод конструктора классов следующим образом:

        File jar = new File("C:\\Users\\JG\\Desktop\\testAlgorithm.jar");

        URL url = jar.toURI().toURL();            
        URL[] urls = new URL[]{url};

        ClassLoader cl = new URLClassLoader(urls);           
        Class classToLoad = Class.forName ("testAlgorithm.Stock", true, cl);

        Method[] m = classToLoad.getDeclaredMethods();
       Class[] cArg = new Class[1];            
        cArg[0] = String.class;

         Method method = classToLoad.getDeclaredMethod("Stock",cArg);  

         Object result = method.invoke (instance, appl , start , end, 800, 30   );

поэтому я использую method.invoke () для вызова конструктора в качестве метода. Я хочу использовать установщики класса (например, stock.setDate () и т. Д.). Как мне это сделать?

Посмотрели другие сообщения, и кто-то предложил пакет Commons BeanUtils? Лучший способ вызова геттера путем отражения

Я хотел бы знать, является ли BeanUtils самым простым, зачем это делать, или мне не хватает некоторых очевидных функций, предоставляемых загрузчиком классов и объектом класса javas?

Спасибо вам, ребята !

Изменить: дополнительная информация. - добавить немного контекста.

Контекст: у меня есть веб-сервер PLay, и я разрешаю пользователю загружать файлы JAR на сервер, чтобы сервер мог использовать классы в загруженных банках.

Сервер будет отображать возвращенные результаты функций классов в jar-файлах загрузки после того, как они были запущены на сервере, на веб-странице.


person Mr Gallagher    schedule 14.01.2014    source источник
comment
Почему вы используете только отражение? Разве он не создает подклассы, не реализует интерфейс или ...?   -  person Dave Newton    schedule 14.01.2014
comment
Прежде всего, что не так с _ 1_? Во-вторых, если вы обращаетесь только к геттерам и сеттерам, то BeanUtils действительно избыточен - см. Мой ответ здесь.   -  person Boris the Spider    schedule 14.01.2014
comment
Привет, отредактировал сообщение, чтобы включить дополнительную информацию + некоторый контекст. Спасибо, что вернулись и помогли :)   -  person Mr Gallagher    schedule 14.01.2014


Ответы (2)


Вы имеете в виду такое высказывание:

try{
    Class<?> klass = Class.forName("[classname]");
    object = ([ObjectType]) klass.newInstance();

    String methodName = "setAddress"; //for example
    Method method = object.getClass().getMethod(methodName, java.lang.String.class);

    method.invoke(object, "[address]");
} catch(NoSuchMethodException e){
    e.printStackTrace();
}

* замените [] своими значениями

person aldux    schedule 14.01.2014
comment
Это именно то, что я искал. Спасибо ! - person Mr Gallagher; 14.01.2014

Предполагается, что java 7. Предполагается, что Stock - это класс, а testAlgorithm - пакет (в соответствии с соглашением используются только маленькие буквы и редко "_").

Тогда это будет выглядеть так:

Constructor c =  classToLoad.getContructor(String.class, int.class,
    boolean.class); // Any number of classes for constructor parameters.
Object obj = c.newInstance("", 3, true);
person Joop Eggen    schedule 14.01.2014