這是最小的代碼示例。接口:在通用類中實例化Java通用類
interface Individual<T> {
public T getVariableValue(int index) ;
public void setVariableValue(int index, T value) ;
public int getNumberOfVariables() ;
public int getNumberOfObjectives() ;
public Individual<T> copy() ;
}
和類:
public class minimalExample<S extends Individual> {
private List<S> doCrossover(List<S> s){
S mom = s.get(0);
S dad = s.get(1);
int crossoverPoint = 5;
S girl = mom.copy();
S boy = dad.copy();
for (int i = 0; i < mom.getNumberOfVariables(); i++) {
if(i > crossoverPoint){
boy.setVariableValue(i, mom.getVariableValue(i));
girl.setVariableValue(i,dad.getVariableValue(i));
}
}
return s;
}
}
如果我嘗試編譯此我得到:
java: incompatible types: Individual cannot be converted to S
這似乎令人困惑。不是'extends
關鍵字是否意味着S必須是個人類型或子類型?
你的複製方法有一個返回類型牛逼不S.我不知道你不必將它轉換至S –