Mean.java
01 /*
02  * Java Genetic Algorithm Library (jenetics-6.0.0).
03  * Copyright (c) 2007-2020 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@gmail.com)
19  */
20 package io.jenetics.util;
21 
22 /**
23  * A mixin interface for genes which can have a mean value. This mixin is
24  * required for the {@link io.jenetics.MeanAlterer}.
25  *
26  @see io.jenetics.MeanAlterer
27  *
28  @author <a href="mailto:franz.wilhelmstoetter@gmail.com">Franz Wilhelmstötter</a>
29  @since 1.0
30  @version 1.6
31  */
32 public interface Mean<T> {
33 
34     /**
35      * Return the (usually arithmetic) mean value of {@code this} and
36      * {@code that}. For {@link io.jenetics.NumericGene}s the mean is the
37      * arithmetic mean.
38      *
39      @param that the second value for calculating the mean.
40      @return the mean value of {@code this} and {@code that}.
41      @throws NullPointerException if the argument is {@code null}.
42      */
43     T mean(final T that);
44 
45 }