Can't get Comparable Interface Working
<p>I'm developing a linear Evol.Algrm. and I'm implementing 'Comparable' for my genomes to make evaluation simpler; here's the class:</p>

<pre><code>public class Chromosome extends Thread implements Comparable
{
    private String[] chromosome;
private double fitness;
private Random chromoGen;


public Chromosome(double[] candidate)
{        
    super();
    //encode candidate PER parameter; using Matrix as storage
    chromosome = encode(candidate);
}
//De-fault
public Chromosome()
{
    super();
}


public int compareTo(Chromosome c)
{
    return (fitness - c.fitness);
}

/**
 * Fitness stored in chromosome!
 */
public void setFitness()
{
    fitness = FF.fitness(this);
}

public double getFitness()
{
    return fitness;
}

/**
 * ENCODERS/DECODERS
 */
public String[] encode(double[] solution)
{
    //subtract 2^n from solution until you reach 2^-n

    /**
     * THE PRECISION IS [2^10 &lt;-&gt; 2^-8]!!!
     */
    double parameter = 0.00;
    String row = "";
    String[] encoded = new String[6];
    for (int j = 0; (j &lt; 6); j++){
        parameter = solution[j];
        for (int i = 10; (i &lt; (-8)); i--){
            if ((parameter - Math.pow(2, i)) &gt;= 0){
                parameter = parameter - Math.pow(2, i);
                row += "1";
            }
            else{
                row += "0";
            }
        }
        encoded[j] = row;

        //refresh
        row = "";
    }

    return encoded;
}

public String encode(double sol)
{
    //subtract 2^n from solution until you reach 2^-n

    /**
     * THE PRECISION IS [2^10 &lt;-&gt; 2^-8]!!!
     */
    String row = "";

    for (int i = 10; (i &lt; (-8)); i--){
        if ((sol - Math.pow(2, i)) &gt;= 0){
            sol = sol - Math.pow(2, i);
            row += "1";
        }
        else{
            row += "0";
        }
    }

    return row;
}

public double decoded(int number)
{
    //returns UN-ENCODED solution
    double decoded = 0.00;
    String parameter = "";

    parameter = chromosome[number];
    for (int i = 10; (i &lt; (-8)); i--){
        if (parameter.substring(i, (i+1)).equals("1")){
            decoded += Math.pow(2, i);
        }
    }

    return decoded;
}

/**
 * GETTERS
 * ---------------\/--REDUNDANT!!
 */
public double getParameter(int parameter)
{
    //decoded solution
    return decoded(parameter);
}

/**
 * Used in E-algrm.
 */
public String getRow(int row)
{
    //encoded solution
    return chromosome[row];
}

/**
 * SETTERS
 */
public void setRow(String encoded, int row)
{
    chromosome[row] = encoded;
}

public void setRow(double decoded, int row)
{
    chromosome[row] = encode(decoded);
}

/**
 * MUTATIONS IFF (mutate?)
 */
public void mutate(double mutationRate)
{
    //range of: 0-17
    int ran = 0;
    char[] temp;
    for (int m = 0; (m &lt; 6); m++){
        temp = String.toCharArray(chromosome[m]);
        ran = chromoGen.nextDouble();
        if (ran &lt;= mutationRate){
        }
    }
}
}
</code></pre>

<p>My question is, even though I clearly implemented the comparison-method; the compiler still isn't happy and says 'Must declare abstract or implement blah blah blah...'</p>

<p>Any help?</p>