gpt4 book ai didi

java - 正确使用java Commons BeanUtils?

转载 作者:行者123 更新时间:2023-12-02 06:19:44 29 4
gpt4 key购买 nike

嗨,仍然学习一些java概念。很抱歉,如果这是一个愚蠢的问题

我在 jar 里有一个类。我正在使用反射动态地将它加载到我的类路径中。然后我像这样调用类构造函数方法:

        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() 来调用构造函数作为方法。我想使用类的 setter (例如 stock.setDate() 等。)我该怎么做?

看过其他帖子并且有人建议使用 Commons BeanUtils 包吗? Best way of invoking getter by reflection

我想知道 BeanUtils 是否是最简单的原因,或者我是否缺少 javas 类加载器和类对象提供的一些明显功能?

谢谢大家!

编辑:更多信息。 - 添加一些上下文。

上下文是我有一个 PLay Web 服务器,并且我让用户 uoload Jars 到服务器,以便服务器使用上传的 jar 中的类。

服务器将上传jar中的类的函数在服务器上运行后的返回结果显示在网页上。

最佳答案

你的意思是这样的吗:

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();
}

* 将 [] 替换为您的值

关于java - 正确使用java Commons BeanUtils?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21119667/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com