Here you can find the source of isAssignable(Class> lhsType, Class> rhsType)
Parameter | Description |
---|---|
lhsType | the target type |
rhsType | the value type that should be assigned to the target type |
public static boolean isAssignable(Class<?> lhsType, Class<?> rhsType)
//package com.java2s; /**/* ww w. j ava 2 s . c o m*/ * Copyright 2008-2016 Juho Jeong * * 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 type as key and corresponding wrapper type as value, * for example: int.class -> Integer.class. */ private static final Map<Class<?>, Class<?>> primitiveTypeToWrapperMap = new HashMap<>(17); /** * 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) { if (rhsType == null) { if (!lhsType.isPrimitive()) return true; } else { if (lhsType.isAssignableFrom(rhsType)) return true; if (rhsType.isPrimitive() && lhsType.equals(getPrimitiveWrapper(rhsType))) return true; if (lhsType.isPrimitive() && rhsType.equals(getPrimitiveWrapper(lhsType))) return true; if (lhsType.isArray() && rhsType.isArray()) { if (rhsType.getComponentType().isPrimitive() && lhsType.equals(getPrimitiveWrapper(rhsType))) return true; if (lhsType.getComponentType().isPrimitive() && rhsType.equals(getPrimitiveWrapper(lhsType))) return true; } } return false; } /** * Gets the wrapper object class for the given primitive type class. * For example, passing <code>boolean.class</code> returns <code>Boolean.class</code> * * @param primitiveType the primitive type class for which a match is to be found * @return the wrapper type associated with the given primitive or null if no match is found */ public static Class<?> getPrimitiveWrapper(Class<?> primitiveType) { return primitiveTypeToWrapperMap.get(primitiveType); } }