私は遺伝的アルゴリズムに取り組んでおり、私はGAを再利用できるようにできるだけ抽象的にしたいと思っています。 Population Interfaceを定義して実装してもうまく動作しますが、それを行う最良の方法ではないと確信しています。私はJava Genericsに大きな経験はありません。定義し、人口のインタフェースを実装する簡単な方法があります(例えば、多分キャスト変換を避ける)(getChromosomesで新しいリストを避けるため?)ジェネリックでこのインタフェースをより簡単に定義/実装する方法は?
public interface Population
{
void addChromosomes(List<? extends Chromosome> chromosomes);
List<Chromosome> getChromosomes();
// More code here ...
}
public class TSPPopulation implements Population
{
private List<TSPChromosome> chromosomes;
@Override
public void addChromosomes(List<? extends Chromosome> chromosomes) {
for (Chromosome chromosome : chromosomes) {
this.chromosomes.add((TSPChromosome) chromosome);
}
}
@Override
public List<Chromosome> getChromosomes() {
List<Chromosome> newList = new ArrayList<Chromosome>();
for (TSPChromosome chromosome : chromosomes) {
newList.add(chromosome);
}
return newList;
}
}
古き良きAI、数年前にこれに似たコードを書いたことを覚えています。 –