Here you can find the source of isAssignableFrom(Class> class1, Class> class2)
public static boolean isAssignableFrom(Class<?> class1, Class<?> class2)
//package com.java2s; /*/* w w w . j a v a 2s . c om*/ * Copyright (C) 2002, 2004 Takao Nakaguchi. * * This is a program for Language Grid Core Node. This combines multiple language resources and provides composite language services. * Copyright (C) 2005-2008 NICT Language Grid Project. * Copyright (C) 2014 Language Grid Project. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2.1 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import java.util.HashMap; import java.util.Map; public class Main { private static Map<String, Class<?>> nameToPrimitiveClass = new HashMap<String, Class<?>>(); private static Map<String, Class<?>> primitiveToWrapperClass = new HashMap<String, Class<?>>(); /** * * */ public static boolean isAssignableFrom(Class<?> class1, Class<?> class2) { if (class1.isAssignableFrom(class2)) return true; if (!class1.isPrimitive()) return false; Class<?> wrapper = primitiveToWrapperClass.get(class1.getName()); return wrapper.isAssignableFrom(class2); } /** * * */ public static boolean isPrimitive(String className) { return nameToPrimitiveClass.containsKey(className); } }