Package io.jenetics
Class AnyGene<A>
- java.lang.Object
-
- io.jenetics.AnyGene<A>
-
- All Implemented Interfaces:
Gene<A,AnyGene<A>>
,Factory<AnyGene<A>>
,Verifiable
public final class AnyGene<A> extends Object implements Gene<A,AnyGene<A>>
Gene
implementation, which allows to create genes without explicit implementing theGene
interface.The example above shows how to createclass Main { // First monday of 2015. private static final LocalDate MIN_MONDAY = LocalDate.of(2015, 1, 5); // Supplier of random 'LocalDate' objects. The implementation is responsible // for guaranteeing the desired allele restriction. In this case we will // generate only mondays. static LocalDate nextRandomMonday() { return MIN_MONDAY.plusWeeks(RandomRegistry.getRandom().nextInt(1000)); } // Create a new 'LocalDate' gene. All other genes, created with // gene.newInstance(), are calling the 'newRandomMonday' method. final AnyGene<LocalDate> gene = AnyGene.of(Main::nextRandomMonday); }
LocalDate
genes from a randomLocalDate
supplier. It also shows how to implement a restriction on the created dates. The usage of theAnyGene
class is useful for supporting custom allele types without explicit implementation of theGene
interface. But theAnyGene
can only be used for a subset of the existing alterers.- Since:
- 3.3
- Version:
- 6.0
- Author:
- Franz Wilhelmstötter
- See Also:
AnyChromosome
- Implementation Note:
- This class is immutable and thread-safe.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description A
allele()
Return the allele of this gene.boolean
equals(Object obj)
int
hashCode()
boolean
isValid()
Check if this object is valid.AnyGene<A>
newInstance()
Return a new, random gene with the same type and with the same constraints than this gene.AnyGene<A>
newInstance(A value)
Create a new gene from the givenvalue
and the gene context.static <A> AnyGene<A>
of(A allele, Supplier<? extends A> supplier)
Create a newAnyGene
instance with the given parameters.static <A> AnyGene<A>
of(A allele, Supplier<? extends A> supplier, Predicate<? super A> validator)
Create a newAnyGene
instance with the given parameters.static <A> AnyGene<A>
of(Supplier<? extends A> supplier)
Create a newAnyGene
instance with the given allelesupplier
.static <A> AnyGene<A>
of(Supplier<? extends A> supplier, Predicate<? super A> validator)
Create a newAnyGene
instance with the given parameters.String
toString()
-
-
-
Method Detail
-
newInstance
public AnyGene<A> newInstance()
Description copied from interface:Gene
Return a new, random gene with the same type and with the same constraints than this gene. For all genes returned by this method holdsgene.getClass() == gene.newInstance().getClass()
. Implementations of this method has to use theRandom
object which can be fetched from theRandomRegistry
.- Specified by:
newInstance
in interfaceFactory<A>
- Specified by:
newInstance
in interfaceGene<A,AnyGene<A>>
- Returns:
- a new instance of type T
-
newInstance
public AnyGene<A> newInstance(A value)
Description copied from interface:Gene
Create a new gene from the givenvalue
and the gene context.- Specified by:
newInstance
in interfaceGene<A,AnyGene<A>>
- Parameters:
value
- the value of the new gene.- Returns:
- a new gene with the given value.
-
isValid
public boolean isValid()
Description copied from interface:Verifiable
Check if this object is valid.- Specified by:
isValid
in interfaceVerifiable
- Returns:
- true if this object is valid, false otherwise.
-
of
public static <A> AnyGene<A> of(A allele, Supplier<? extends A> supplier, Predicate<? super A> validator)
Create a newAnyGene
instance with the given parameters. New (random) genes are created with the given allelesupplier
.- Type Parameters:
A
- the allele type- Parameters:
allele
- the actual allele instance the created gene represents.null
values are allowed.supplier
- the allele-supplier which is used for creating new, random allelesvalidator
- the validator used for validating the created gene. This predicate is used in theisValid()
method.- Returns:
- a new
AnyGene
with the given parameters - Throws:
NullPointerException
- if thesupplier
orvalidator
isnull
-
of
public static <A> AnyGene<A> of(A allele, Supplier<? extends A> supplier)
Create a newAnyGene
instance with the given parameters. New (random) genes are created with the given allelesupplier
. Thevalidator
predicate of the generated gene will always returntrue
.- Type Parameters:
A
- the allele type- Parameters:
allele
- the actual allele instance the created gene represents.null
values are allowed.supplier
- the allele-supplier which is used for creating new, random alleles- Returns:
- a new
AnyGene
with the given parameters - Throws:
NullPointerException
- if thesuppler
isnull
-
of
public static <A> AnyGene<A> of(Supplier<? extends A> supplier)
Create a newAnyGene
instance with the given allelesupplier
. Thevalidator
predicate of the generated gene will always returntrue
.- Type Parameters:
A
- the allele type- Parameters:
supplier
- the allele-supplier which is used for creating new, random alleles- Returns:
- a new
AnyGene
with the given parameters - Throws:
NullPointerException
- if one of the parameters isnull
-
of
public static <A> AnyGene<A> of(Supplier<? extends A> supplier, Predicate<? super A> validator)
Create a newAnyGene
instance with the given parameters. New (random) genes are created with the given allelesupplier
.- Type Parameters:
A
- the allele type- Parameters:
supplier
- the allele-supplier which is used for creating new, random allelesvalidator
- the validator used for validating the created gene. This predicate is used in theisValid()
method.- Returns:
- a new
AnyGene
with the given parameters - Throws:
NullPointerException
- if one of the parameters isnull
-
-