Package io.jenetics

Interface Gene<A,​G extends Gene<A,​G>>

  • Type Parameters:
    A - the Allele type of this gene.
    All Superinterfaces:
    Factory<G>, Verifiable
    All Known Subinterfaces:
    BoundedGene<A,​G>, NumericGene<N,​G>
    All Known Implementing Classes:
    AnyGene, BitGene, CharacterGene, DoubleGene, EnumGene, IntegerGene, LongGene

    public interface Gene<A,​G extends Gene<A,​G>>
    extends Factory<G>, Verifiable
    Genes are the atoms of the Jenetics library. They contain the actual information (alleles) of the encoded solution. All implementations of the this interface are final, immutable and can be only created via static factory methods which have the name of. When extending the library with own Gene implementations, it is recommended to also implement it as value objects.
    Since:
    1.0
    Version:
    6.0
    See Also:
    Value object, Chromosome
    Implementation Requirements:
    Jenetics requires that the individuals (Genotype and Phenotype) are not changed after they have been created. Therefore, all implementations of the Gene interface must also be immutable.
    • Method Detail

      • allele

        A allele()
        Return the allele of this gene.
        Returns:
        the allele of this gene.
      • newInstance

        G newInstance()
        Return a new, random gene with the same type and with the same constraints than this gene. For all genes returned by this method holds gene.getClass() == gene.newInstance().getClass(). Implementations of this method has to use the Random object which can be fetched from the RandomRegistry.
        Specified by:
        newInstance in interface Factory<A>
        Returns:
        a new instance of type T
      • newInstance

        G newInstance​(A value)
        Create a new gene from the given value and the gene context.
        Parameters:
        value - the value of the new gene.
        Returns:
        a new gene with the given value.
        Since:
        2.0