【发布时间】:2014-02-02 20:58:30
【问题描述】:
你好还在学习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 包? Best way of invoking getter by reflection
我想知道 BeanUtils 是否这是最简单的为什么要这样做,或者我是否缺少 javas 类加载器和类对象提供的一些明显功能?
谢谢你们!
编辑:更多信息。 - 添加一些上下文。
上下文是我有一个 PLay 网络服务器,并且我让用户 uoload Jars 到服务器,以便服务器使用上传的 jars 中的类。
服务器将上传的jar包中的类函数在服务器上运行后的返回结果显示在网页上。
【问题讨论】:
-
为什么只使用反射?它不是子类化一些东西,或者实现一个接口,或者......?
-
首先,
Class.getConstructor有什么问题?其次,如果您只访问 getter 和 setter,那么 BeanUtils 真的是矫枉过正 - 请参阅我的回答 here。 -
嗨,已编辑帖子以包含更多信息+一些上下文。感谢您回来并提供一些帮助:)
标签: java reflection jar javabeans introspection