I am not finding any error in this class, but Netbeans continuously showing red symbol on that class. Class is
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ea;
/**
*
* @author riyad
*/
import java.util.Random;
import java.util.BitSet;
public class Individual
{
BitSet variable;
double x;
double fitness;
double sharedFitness;
final int SIZE;
Random generator = new Random();
public Individual(int SIZE)
{
this.variable = new BitSet(SIZE);
this.fitness = 0;
this.sharedFitness = 0;
this.SIZE = SIZE;
for(int i=0; i<SIZE; i++)
{
if(generator.nextBoolean())
{
variable.set(i);
}
else
{
variable.clear(i);
}
}
x = Double.parseDouble(variable.toString());
}
public Individual copy()
{
Individual ind = new Individual(SIZE);
this.variable = (BitSet) ind.variable.clone();
this.fitness = ind.fitness;
this.sharedFitness = ind.sharedFitness;
this.x = ind.x;
return ind;
}
public void evaluate()
{
fitness = x * Math.sin(Math.sqrt(x));
}
public boolean getBit(int i)
{
return variable.get(i);
}
public BitSet getBitSet()
{
return variable;
}
public void setBit(int i)
{
variable.set(i);
}
public void clearBit(int i)
{
variable.clear(i);
}
public double getFitness()
{
return fitness;
}
public double sharedFitness()
{
return sharedFitness;
}
public void setSharedFitness(double fitness)
{
this.sharedFitness = fitness;
}
public void setFitness(double fitness)
{
this.fitness = fitness;
}
}
The code is compiling but getting runtime error.
Exception in thread "main" java.lang.VerifyError: (class: ea/Individual, method: <init> signature: (I)V) Constructor must call super() or this()
In another class, where Individual class is being used:
ArrayList<Individual> pop = new ArrayList<Individual>();
This where Individual class is being intantiated:
Individual temp = new Individual(STRING_SIZE);
pop.add(temp);
EDIT
I haven’t renamed the file manually. All the coding was done in Netbeans. The only problem is when I am creating instance of Individual.
EDIT2
I have copied the project another place, everything is normal again. probably a bug of Netbeans or JDK
You should
javapthe .class file and check whether the compiler generated a call to super() near the start of your constructor.The JVM verifier requires that any constructor (other than for Object, of course) invoke (possibly indirectly via another constructor) it’s superclass’s constructor. Normally the compiler inserts a call to the superclass constructor automatically if you don’t do it, but it’s possible that it could be confused into not doing this under some circumstances (though the code presented doesn’t seem that complex).
(And, yes, you have
thisandindswapped in most places incopy.)