Java Reflection Assignable isAssignableValue(Class type, Object value)

Here you can find the source of isAssignableValue(Class type, Object value)

Description

Determine if the given type is assignable from the given value, assuming setting by reflection.

License

Apache License

Parameter

Parameter Description
type the target type
value the value that should be assigned to the type

Return

if the type is assignable from the value

Declaration

public static boolean isAssignableValue(Class type, Object value) 

Method Source Code

//package com.java2s;
/*/*from  w  w w  .j  a v a  2s .c  o m*/
 * Copyright 2002-2008 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.HashMap;

import java.util.Map;

public class Main {
    /**
     * Map with primitive wrapper type as key and corresponding primitive
     * type as value, for example: Integer.class -> int.class.
     */
    private static final Map primitiveWrapperTypeMap = new HashMap(8);

    /**
     * Determine if the given type is assignable from the given value,
     * assuming setting by reflection. Considers primitive wrapper classes
     * as assignable to the corresponding primitive types.
     * @param type   the target type
     * @param value the value that should be assigned to the type
     * @return if the type is assignable from the value
     */
    public static boolean isAssignableValue(Class type, Object value) {
        return (value != null ? isAssignable(type, value.getClass()) : !type.isPrimitive());
    }

    /**
     * Check if the right-hand side type may be assigned to the left-hand side
     * type, assuming setting by reflection. Considers primitive wrapper
     * classes as assignable to the corresponding primitive types.
     * @param lhsType the target type
     * @param rhsType   the value type that should be assigned to the target type
     * @return if the target type is assignable from the value type
     * @see TypeUtils#isAssignable
     */
    public static boolean isAssignable(Class lhsType, Class rhsType) {
        return (lhsType.isAssignableFrom(rhsType) || lhsType.equals(primitiveWrapperTypeMap.get(rhsType)));
    }
}

Related

  1. isAssignable(final Class from, final Class to)
  2. isAssignableFrom(Class class1, Class class2)
  3. isAssignableFrom(Class to, Class from)
  4. isAssignableFrom(Class to, Class from)
  5. isAssignableFrom(Class toClass, Class fromClass)
  6. isAssignableValue(Class type, Object value)
  7. isClassAssignableFrom(Class formal, Class actual)
  8. isCompatible(Class actualType, Class parameterType)
  9. isCompatible(Class parameterType, Class parameterClass)