set Java Bean Property - Java Reflection

Java examples for Reflection:Java Bean

Description

set Java Bean Property

Demo Code


import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main{
    private static void setProperty(Object target,
            PropertyDescriptor targetPd, Object value)
            throws IllegalAccessException, InvocationTargetException {
        Method writeMethod = targetPd.getWriteMethod();
        if (!Modifier.isPublic(writeMethod.getDeclaringClass()
                .getModifiers())) {/* w ww. ja v a 2s  .co m*/
            writeMethod.setAccessible(true);
        }
        writeMethod.invoke(
                target,
                new Object[] { convert(value,
                        writeMethod.getParameterTypes()[0]) });
    }
    private static Object convert(Object value, Class<?> targetType) {
        if (value == null)
            return null;
        if (targetType == String.class) {
            return value.toString();
        } else {
            return convert(value.toString(), targetType);
        }
    }
    private static Object convert(String value, Class<?> targetType) {
        if (targetType == Byte.class || targetType == byte.class) {
            return new Byte(value);
        }
        if (targetType == Short.class || targetType == short.class) {
            return new Short(value);
        }
        if (targetType == Integer.class || targetType == int.class) {
            return new Integer(value);
        }
        if (targetType == Long.class || targetType == long.class) {
            return new Long(value);
        }
        if (targetType == Float.class || targetType == float.class) {
            return new Float(value);
        }
        if (targetType == Double.class || targetType == double.class) {
            return new Double(value);
        }
        if (targetType == BigDecimal.class) {
            return new BigDecimal(value);
        }
        if (targetType == BigInteger.class) {
            return BigInteger.valueOf(Long.parseLong(value));
        }
        if (targetType == Boolean.class || targetType == boolean.class) {
            return new Boolean(value);
        }
        if (targetType == boolean.class) {
            return new Boolean(value);
        }
        if (targetType == char.class) {
            return value.charAt(0);
        }
        if (DateHelper.isDateType(targetType)) {
            return DateHelper.parseDate(value, targetType, "yyyyMMdd",
                    "yyyy-MM-dd", "yyyyMMddHHmmSS", "yyyy-MM-dd HH:mm:ss",
                    "HH:mm:ss");
        }

        throw new IllegalArgumentException("cannot convert value:" + value
                + " to targetType:" + targetType);
    }
}

Related Tutorials