帮忙看看这个问题,请问该如何在Java中求动态设置变量值?

现有变量 site1,site2,site3。。。。site40, set 方法 setSite1(String site1),setSite2(String site2),setSite3(String site3)。。。。setSite40(String site40).
现在要求如下:我想在for循环下 动态的设置 site1-site40的值。不要 if 判断 就想拼接的那种方式
如:setSite + 当前循环次数 调用相应的 set 方法复制,求高手赐教....

小唯快跑啊
浏览 335回答 2
2回答

RISEBY

例子:Method[] methods = obj.getClass().getDeclaredMethods();//获取类中的所有方法集合    for (Method method : methods) {//循环方法集合    try {        return method.invoke(obj, args);//args是Object[]类型的,用于向方法中传递参数    } catch (Exception e) {        throw convertReflectionExceptionToUnchecked(e);    }    } obj是你的类

白板的微信

这个东西 可以封装到框架里。。估计给你发了 你看不懂。。/*** 根据成员名给实例Bean中赋值** @param bean* @return*/public static void setFieldValue(Object bean, String fieldName,Class clazz, Object value) throws Exception {if ((fieldName == null) || (fieldName.length() < 1)) {throw new IllegalArgumentException("String must have at least one character.");} else {try {invoke(bean, "set" + fieldName, new Class[] { clazz },new Object[] { value });} catch (java.lang.NoSuchMethodException nsme) {nsme.printStackTrace();}}}/*** 工具方法* (在用)* @param oldObject* @param methodName* @param argsClass* @param args* @return* @throws SecurityException* @throws NoSuchMethodException* @throws IllegalArgumentException* @throws IllegalAccessException* @throws InvocationTargetException*/public static Object invoke(Object oldObject, String methodName,Class[] argsClass, Object[] args) throws SecurityException,NoSuchMethodException, IllegalArgumentException,IllegalAccessException, InvocationTargetException {Class cl = oldObject.getClass();Method method = cl.getMethod(methodName, argsClass);return method.invoke(oldObject, args);}setFieldValue(类名,方法名,方法名.getClass(),值);
打开App,查看更多内容
随时随地看视频慕课网APP