    001package javax.visrec.spi;
    002
    003import javax.visrec.ml.classification.Classifier;
    004
    005/**
    006 * Service to provide the correct {@link Classifier} implementation.
    007 *
    008 * @author Kevin Berendsen
    009 * @since 1.0
    010 */
    011public interface ClassifierService {
    012
    013    /**
    014     * Get the {@link Classifier} which is able to classify images by the {@code sourceType} object.
    015     *
    016     * @param sourceType {@link Class} object of the source type.
    017     * @param resultMapType {@link Class} object of the result map.
    018     * @param <T> the class which is able to be handled by the {@link Classifier} and given as {@link Class} object.
    019     * @param <R> type of classification result map eg. String is commonly used , but Enum as well
    020     * @return {@link Classifier} which is able to classify images of {@code T}
    021     */
    022    <T, R> Classifier<T, R> getBySource(Class<T> sourceType, Class<R> resultMapType);
    023}