Java Reflection Assignable isAssignable(Class lhsType, Class rhsType)

Here you can find the source of isAssignable(Class lhsType, Class rhsType)

Description

Check if the right-hand side type may be assigned to the left-hand side type, assuming setting by reflection.

License

Apache License

Parameter

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

Return

if the target type is assignable from the value type

Declaration

public static boolean isAssignable(Class lhsType, Class rhsType) 

Method Source Code

//package com.java2s;
/**// www  . jav a2 s . co m
 * Copyright (C) 2010 Mycila <mathieu.carbou@gmail.com>
 *
 * 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<Class, Class> wrapperPrimitives = new HashMap<Class, Class>(8);

    /**
     * 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
     */
    public static boolean isAssignable(Class lhsType, Class rhsType) {
        return (lhsType.isAssignableFrom(rhsType) || lhsType.equals(wrapperPrimitives.get(rhsType)));
    }
}

Related

  1. isAssignable(Class clazz, Class toClass)
  2. isAssignable(Class cls, final Class toClass)
  3. isAssignable(Class lhsType, Class rhsType)
  4. isAssignable(Class lhsType, Class rhsType)
  5. isAssignable(Class lhsType, Class rhsType)