Package org.optaplanner.core.config

## Class AbstractConfig<Config_ extends AbstractConfig<Config_>>

- java.lang.Object
- - org.optaplanner.core.config.AbstractConfig<Config_>

- Type Parameters:
    `Config_` - the same class as the implementing subclass
  Direct Known Subclasses:
    `BenchmarkReportConfig`, `ConstructionHeuristicForagerConfig`, `EntityPlacerConfig`, `LocalSearchAcceptorConfig`, `LocalSearchForagerConfig`, `PhaseConfig`, `ProblemBenchmarksConfig`, `ScoreDirectorFactoryConfig`, `SelectorConfig`, `SolverBenchmarkConfig`, `SolverConfig`, `SolverManagerConfig`, `TerminationConfig`

      public abstract class AbstractConfig<Config_ extends AbstractConfig<Config_>>
      extends Object

  A config class is a user friendly, validating configuration class that maps XML input. It builds the runtime impl classes (which are optimized for scalability and performance instead).

  A config class should adhere to "configuration by exception" in its XML/JSON input/output, so all non-static fields should be null by default. Using the config class to build a runtime class, must not alter the config class's XML/JSON output.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractConfig()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract Config_` | `copyConfig()` | Typically implemented by constructing a new instance and calling `inherit(AbstractConfig)` on it
    `abstract Config_` | `inherit​(Config_ inheritedConfig)` | Inherits each property of the `inheritedConfig` unless that property (or a semantic alternative) is defined by this instance (which overwrites the inherited behaviour).
    `String` | `toString()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractConfig

          public AbstractConfig()

  - ### Method Detail

    - #### inherit

          public abstract Config_ inherit​(Config_ inheritedConfig)

      Inherits each property of the `inheritedConfig` unless that property (or a semantic alternative) is defined by this instance (which overwrites the inherited behaviour).

      After the inheritance, if a property on this `AbstractConfig` composition is replaced, it should not affect the inherited composition instance.

      Parameters:
        `inheritedConfig` - never null
      Returns:
        this

    - #### copyConfig

          public abstract Config_ copyConfig()

      Typically implemented by constructing a new instance and calling `inherit(AbstractConfig)` on it
      Returns:
        new instance

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`