ClassUtil { public static boolean isInstance(Class<?> clazz, Object object) { if (clazz == null || object == null) { return false; } if (clazz.isPrimitive()) { PrimitiveInfo<?> info = PRIMITIVES.get(clazz.getName()); return info.wrapperType.isInstance(object); } return clazz.isInstance(object); }  static String getClassNameAsResource(String className); static Class<?> getPrimitiveType(String name); static Class<?> getPrimitiveType(Class<?> type); @SuppressWarnings("unchecked") static Class<T> getWrapperTypeIfPrimitive(Class<T> type); static T getPrimitiveDefaultValue(Class<T> type); static boolean isPrimitiveOrWrapper(Class<?> clazz); static Class<?> getArrayClass(Class<?> componentType); static Class<?> getArrayClass(Class<?> componentClass, int dimension); static Class<?> getArrayComponentType(Class<?> type); static boolean isInstance(Class<?> clazz, Object object); static boolean canInstatnce(Class<T> clazz); static List<Class<?>> getAllSuperclasses(Class<?> clazz); static Class<?>[] getAllSuperclassesAsArray(Class<?> clazz); static List<Class<?>> getAllInterfaces(Class<?> clazz); static Class<?>[] getAllInterfacesAsArray(Class<?> clazz); static Set<Class<?>> getAllInterfacesAsSet(Class<?> clazz, ClassLoader classLoader); static boolean isVisible(Class<?> clazz, ClassLoader classLoader); static boolean isCacheSafe(Class<?> clazz, ClassLoader classLoader); static boolean isInterfaceImpl(Class<?> thisClass, Class<?> targetInterface); static boolean isSubClass(Class<?> thisClass, Class<?> target); static boolean isAssignable(Class<?>[] classes, Class<?>[] fromClasses); static boolean isAssignable(Class<?> clazz, Class<?> fromClass); static String locateClass(Class<?> clazz); static String locateClass(String className); static String locateClass(String className, ClassLoader loader); static String getFriendlyClassNameForObject(Object object); static String getFriendlyClassName(Class<?> clazz); static String getFriendlyClassName(String javaClassName); static String getSimpleClassNameForObject(Object object); static String getSimpleClassNameForObject(Object object, boolean processInnerClass); static String getSimpleClassName(Class<?> clazz); static String getSimpleClassName(Class<?> clazz, boolean proccessInnerClass); static String getSimpleClassName(String javaClassName); static String getSimpleClassName(String javaClassName, boolean proccesInnerClass); static String getSimpleMethodSignature(Method method); static String getSimpleMethodSignature(Method method, boolean withClassName); static String getSimpleMethodSignature(Method method, boolean withModifiers, boolean withReturnType,
            boolean withClassName, boolean withExceptionType); static String getShortClassName(String className); static String getShortClassName(Class<?> clazz); static final char INNER_CLASS_SEPARATOR_CHAR; static final String INNER_CLASS_SEPARATOR; }
@Test public void isInstance() { assertFalse(ClassUtil.isInstance(null, null)); assertFalse(ClassUtil.isInstance(Object.class, null)); assertFalse(ClassUtil.isInstance(null, 0)); assertTrue(ClassUtil.isInstance(Object.class, new Object())); assertTrue(ClassUtil.isInstance(Object.class, 0)); assertTrue(ClassUtil.isInstance(Object.class, "test")); assertFalse(ClassUtil.isInstance(String.class, 0)); assertTrue(ClassUtil.isInstance(String.class, "test")); assertFalse(ClassUtil.isInstance(Integer.class, "test")); assertTrue(ClassUtil.isInstance(Serializable.class, "test")); assertFalse(ClassUtil.isInstance(Serializable.class, new ClassUtilTest())); assertTrue(ClassUtil.isInstance(Integer.class, 0)); assertTrue(ClassUtil.isInstance(int.class, 0)); assertFalse(ClassUtil.isInstance(long.class, 0)); assertFalse(ClassUtil.isInstance(Long.class, 0)); assertFalse(ClassUtil.isInstance(int[].class, new Integer[] { 0 })); assertFalse(ClassUtil.isInstance(Integer[].class, new int[] { 0 })); assertTrue(ClassUtil.isInstance(int[].class, new int[] { 0 })); assertTrue(ClassUtil.isInstance(Integer[].class, new Integer[] { 0 })); }