package de.lmu.ifi.dbs.elki.utilities.optionhandling; /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures Copyright (C) 2011 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import de.lmu.ifi.dbs.elki.utilities.InspectionUtilFrequentlyScanned; /** * Interface to define the required methods for command line interaction. * * Important note: * *

* Although this cannot be specified in a Java interface, any class * implementing this interface must also have a constructor that takes * a single * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization} * as option, which is used to set the class parameters. *

* *

* Alternatively, a constructor with no options is also allowed. *

* *

* This means, each class implementing Parameterizable * must have a constructor that either is

* *
 * @code
 * public Class(Parameterizable config) { ... }
 * }
 * 
* *
or
* *
 * @code
 * public Class() { ... }
 * }
 * 
* *
*

* *

* Constructors MUST not do expensive operations or allocations, since * they will also be called just to determine and validate parameters. *

* *

* For documentation, the classes should also be annotated with * {@link de.lmu.ifi.dbs.elki.utilities.documentation.Title} * {@link de.lmu.ifi.dbs.elki.utilities.documentation.Description} and * {@link de.lmu.ifi.dbs.elki.utilities.documentation.Reference} (where * possible). *

* *

* Please check the package documentation for full information on this * interface. *

* *

* The application * {@link de.lmu.ifi.dbs.elki.application.internal.CheckParameterizables} can be * used to check this class contracts. *

* * @author Erich Schubert * * @apiviz.exclude * @apiviz.excludeSubtypes * @apiviz.has de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter oneway - n * @apiviz.uses de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization * .Parameterization oneway */ public interface Parameterizable extends InspectionUtilFrequentlyScanned { // Empty marker interface - the \@Description / \@Title / \@Reference and // constructor requirements cannot be specified in Java! }