集册 Java实例教程 设置任何bean属性

设置任何bean属性

欢马劈雪     最近更新时间:2020-01-02 10:19:05

423
设置任何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) 
展开阅读全文