【发布时间】:2012-01-24 15:09:47
【问题描述】:
我在这个类中没有发现任何错误,但是 Netbeans 在那个类上持续显示红色符号。类是
/*
* 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;
}
}
代码正在编译,但出现运行时错误。
Exception in thread "main" java.lang.VerifyError: (class: ea/Individual, method: <init> signature: (I)V) Constructor must call super() or this()
在另一个类中,正在使用个人类:
ArrayList<Individual> pop = new ArrayList<Individual>();
个人类被实例化的地方:
Individual temp = new Individual(STRING_SIZE);
pop.add(temp);
编辑
我没有手动重命名文件。所有的编码都是在 Netbeans 中完成的。唯一的问题是当我创建个人实例时。
EDIT2
我已经将项目复制到另一个地方,一切又正常了。可能是 Netbeans 或 JDK 的错误
【问题讨论】:
-
当前代码似乎是正确的,问题可能出在个人类的使用上。如何创建它的实例?
-
@stacker:有点不懂。我是新手
-
当我用这个类创建项目时,我在 Eclipse 中没有看到任何错误。
-
这似乎是 Netbeans 特有的怪癖,当在不同的包中具有相同签名的重复类时:stackoverflow.com/questions/6560988/… 可能您通过文件资源管理器手动重命名旧类,而不是使用 IDE 重构功能。彻底清除您的项目。