01 /* 
02  * Java Genetic Algorithm Library (jenetics-6.3.0). 
03  * Copyright (c) 2007-2021 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.ext; 
21  
22 import io.jenetics.Chromosome; 
23  
24 /** 
25  * Chromosome for tree shaped genes. 
26  * 
27  * @author <a href="mailto:franz.wilhelmstoetter@gmail.com">Franz Wilhelmstötter</a> 
28  * @version 6.0 
29  * @since 3.9 
30  */ 
31 public interface TreeChromosome<A, G extends TreeGene<A, G>> 
32     extends Chromosome<G> 
33 { 
34  
35     /** 
36      * Return the root gene of this chromosome. Since the gene type is also a 
37      * {@link io.jenetics.ext.util.Tree}, you are able to assign it to one. 
38      * <pre>{@code 
39      * final Tree<A, ?> t1 = root(); 
40      * final Tree<?, ?> t2 = root(); 
41      * }</pre> 
42      * This method is also an alias for {@link #gene()}, which returns the 
43      * first gene of the chromosome. 
44      * 
45      * @see #gene() 
46      * 
47      * @return the root tree gene of this chromosome 
48      */ 
49     default G root() { 
50         return gene(); 
51     } 
52  
53 }
    
    |