Skip to content

Instantly share code, notes, and snippets.

@deyindra
Created July 27, 2016 04:25
Show Gist options
  • Save deyindra/ea74ebc93ddcc1a4be34e1d2423b78fe to your computer and use it in GitHub Desktop.
Save deyindra/ea74ebc93ddcc1a4be34e1d2423b78fe to your computer and use it in GitHub Desktop.
Java instanceOf implementation without using isInstance or isAssignableForm method
public static <T> boolean instanceOf(T object, Class<?> clazz){
if(object==null){
return false;
}else{
Class<?> baseClass = object.getClass();
if (baseClass.isArray() && clazz.isArray()) {
return instanceOf(baseClass.getComponentType(), clazz.getComponentType());
} else
return !(!baseClass.isArray() && clazz.isArray())
&& !(baseClass.isArray() && !clazz.isArray())
&& instanceOf(baseClass, clazz);
}
}
private static boolean instanceOf(Class<?> baseClass, Class<?> clazz){
if(baseClass!=null && baseClass.equals(clazz)){
return true;
}else{
if(baseClass!=null) {
Set<Class<?>> classes = new HashSet<>(Arrays.asList(baseClass.getInterfaces()));
Class<?> superClass = baseClass.getSuperclass();
if(superClass!=null){
classes.add(superClass);
}
for (Class<?> vaClass : classes) {
if (instanceOf(vaClass, clazz)) {
return true;
}
}
}
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment