001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.projection.proj;
003
004/**
005 * Proj Factory that creates instances from a given class.
006 */
007public class ClassProjFactory implements ProjFactory {
008
009    private final Class<? extends Proj> projClass;
010
011    /**
012     * Constructs a new {@code ClassProjFactory}.
013     * @param projClass projection class
014     */
015    public ClassProjFactory(Class<? extends Proj> projClass) {
016        this.projClass = projClass;
017    }
018
019    @Override
020    public Proj createInstance() {
021        Proj proj = null;
022        try {
023            proj = projClass.getConstructor().newInstance();
024        } catch (ReflectiveOperationException e) {
025            throw new RuntimeException(e);
026        }
027        return proj;
028    }
029}