import com.example.MyAnnotation;
import org.scannit.filter.Filter;
import java.lang.annotation.Annotation;
public class MyAnnotationFilter implements Filter {
public boolean matches(Class<?> clazz) {
Annotation annotation = clazz.getAnnotation(MyAnnotation.class);
return annotation != null;
}
}
import org.scannit.ClassLoader;
import org.scannit.exception.ClassLoadingException;
public class MyClassloader implements ClassLoader {
public Object loadClass(Class<?> clazz) throws ClassLoadingException {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new ClassLoadingException("Failed to instantiate class: " + clazz.getName(), e);
}
}
}
import org.scannit.Scanner;
import org.scannit.exception.ScanningException;
public class Application {
public static void main(String[] args) {
Scanner scanner = new Scanner("com.example");
scanner.setFilter(new MyAnnotationFilter());
scanner.setClassLoader(new MyClassloader());
try {
scanner.scan();
} catch (ScanningException e) {
e.printStackTrace();
}
}
}