| 
01 /*02  * Java Genetic Algorithm Library (jenetics-3.0.0).
 03  * Copyright (c) 2007-2014 Franz Wilhelmstötter
 04  *
 05  * Licensed under the Apache License, Version 2.0 (the "License");
 06  * you may not use this file except in compliance with the License.
 07  * You may obtain a copy of the License at
 08  *
 09  *      http://www.apache.org/licenses/LICENSE-2.0
 10  *
 11  * Unless required by applicable law or agreed to in writing, software
 12  * distributed under the License is distributed on an "AS IS" BASIS,
 13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  * See the License for the specific language governing permissions and
 15  * limitations under the License.
 16  *
 17  * Author:
 18  *    Franz Wilhelmstötter (franz.wilhelmstoetter@gmx.at)
 19  */
 20 package org.jenetics;
 21
 22 import static org.jenetics.internal.util.Equality.eq;
 23
 24 import org.jenetics.internal.util.Equality;
 25 import org.jenetics.internal.util.Hash;
 26
 27 import org.jenetics.util.ISeq;
 28
 29 /**
 30  * Abstract chromosome for {@code BoundedGene}s.
 31  *
 32  * @author <a href="mailto:franz.wilhelmstoetter@gmx.at">Franz Wilhelmstötter</a>
 33  * @version 1.6 — <em>$Date: 2014-12-28 $</em>
 34  * @since 1.6
 35  */
 36 abstract class AbstractBoundedChromosome<
 37     A extends Comparable<? super A>,
 38     G extends AbstractBoundedGene<A, G>
 39 >
 40     extends AbstractChromosome<G>
 41     implements BoundedChromosome<A, G>
 42 {
 43
 44     private static final long serialVersionUID = 1L;
 45
 46     /**
 47      * The minimum value of this {@code BoundedChromosome}.
 48      */
 49     A _min;
 50
 51     /**
 52      * The maximum value of this {@code BoundedChromosome}.
 53      */
 54     A _max;
 55
 56     /**
 57      * Create a new chromosome from the given genes array.
 58      *
 59      * @param genes the genes of the new chromosome.
 60      * @throws IllegalArgumentException if the {@code genes.length()} is smaller
 61      *         than one.
 62      * @throws NullPointerException if the {@code genes} are {@code null}.
 63      */
 64     protected AbstractBoundedChromosome(final ISeq<? extends G> genes) {
 65         super(genes);
 66         _min = genes.get(0)._min;
 67         _max = genes.get(0)._max;
 68     }
 69
 70     @Override
 71     public A getMin() {
 72         return _min;
 73     }
 74
 75     @Override
 76     public A getMax() {
 77         return _max;
 78     }
 79
 80     @Override
 81     public int hashCode() {
 82         return Hash.of(getClass())
 83             .and(super.hashCode())
 84             .and(_min)
 85             .and(_max).value();
 86     }
 87
 88     @Override
 89     public boolean equals(final Object object) {
 90         return Equality.of(this, object).test(nc ->
 91             eq(_min, nc._min) &&
 92             eq(_max, nc._max) &&
 93             super.equals(object)
 94         );
 95     }
 96
 97 }
 |