设置任何bean属性
/******************************************************************************* * Copyright (c) 2006 The Regents of the University of California * All rights reserved. Permission to use, copy, modify and distribute * any part of this software for educational, research and non-profit * purposes, without fee, and without a written agreement is hereby * granted, provided that the above copyright notice, this paragraph * and the following three paragraphs appear in all copies. * * Those desiring to incorporate this software into commercial products or * use for commercial purposes should contact the Technology Transfer & * Intellectual Property Services, University of California, San Diego, * 9500 Gilman Drive, Mail Code 0910, La Jolla, CA 92093-0910, Ph: (858) * 534-5815, FAX: (858) 534-7345, E-MAIL:invent@ucsd.edu. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, * INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF this software, EVEN IF * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THIS SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND THE UNIVERSITY * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, * UPDATES, ENHANCEMENTS, OR MODIFICATIONS. THE UNIVERSITY OF CALIFORNIA * MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY KIND, EITHER * IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR * THAT THE USE OF THE WILL NOT INFRINGE ANY PATENT, TRADEMARK OR OTHER * RIGHTS. * * Contributors: * San Diego Supercomputer Center - SWAMI Team - initial API and implementation *******************************************************************************/ //package com.nowjava; import java.lang.reflect.InvocationTargetException;// 来 自 nowjava - 时代Java import java.lang.reflect.Method; public class Main { public static void main(String[] argv) throws Exception { Object bean = "nowjava.com"; String propertyName = "nowjava.com"; String value = "nowjava.com"; setPropertyFromString(bean, propertyName, value); } /** * Set any bean property * * @param bean * @param propertyName * @param value * @throws SecurityException * @throws NoSuchMethodException * @throws IllegalArgumentException * @throws IllegalAccessException * @throws InvocationTargetException */ public static void setPropertyFromString(Object bean, String propertyName, String value) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { String methodName = getSetterName(propertyName);/**来自 N o w J a v a . c o m - 时代Java**/ Class<?>[] types = new Class[1]; types[0] = String.class; Method method = getMethod(bean.getClass(), methodName, types); method.setAccessible(true); method.invoke(bean, value); } /** * returns the method name for the property mutator * * @param propertyName * @return methodName */ public static String getSetterName(String propertyName) { return buildMethodName("set", propertyName); } /** * * @param beanClass * @param methodName * @param parameters * @return method * @throws NoSuchMethodException * @throws SecurityException */ private static Method getMethod(Class<?> beanClass, String methodName, Class<?>[] types)