package com.indyforge.twod.engine.util.iteration;
/**
* A simple type filter.
*
* @author Christopher Probst
*/
public final class TypeFilter implements Filter<Object> {
// The element type you want to find
private final Class<?> elementType;
// Whether or not to allow extended classes
private final boolean allowExtendedClasses;
public TypeFilter(Class<?> elementType) {
this(elementType, true);
}
public TypeFilter(Class<?> elementType, boolean allowExtendedClasses) {
if (elementType == null) {
throw new NullPointerException("elementType");
}
this.elementType = elementType;
this.allowExtendedClasses = allowExtendedClasses;
}
/*
* (non-Javadoc)
*
* @see
* com.indyforge.twod.engine.util.iteration.Filter#accept(java.lang.Object)
*/
@Override
public boolean accept(Object element) {
// Fill valid flag
return element != null ? (allowExtendedClasses ? elementType
.isAssignableFrom(element.getClass()) : elementType
.equals(element.getClass())) : false;
}
}