我在Netbeans中遇到一个奇怪的编译错误。
我正在创建一个Experiment对象并在其上调用run方法。
Experiment experiment=new Experiment();
Result result = experiment.run(t, steps, trials, breadth, depth, seed, distribution);
编译器抱怨
运行的类型(Maplayout,int,int,int,int,long,int)是 错误的。
我的方法签名看起来很正常:
public Result run(MapLayout t, int steps, int trials,
int breadth, int depth, long seed, int distribution)
我已经仔细检查了我要传递的参数,他们看起来都很正常。如果我传入:
experiment.run(null, 1,1,1,1,1l,1);
我在run方法上得到了相同的编译错误。
我错过了一些明显的东西吗?有太多的Javascript损害了我的大脑吗?
答案 0 :(得分:6)
我遇到了同样的问题,在我的案例中,解决方案非常简单。
案件:
我在我正在工作的项目的包中复制/粘贴来自另一个项目的一些类
他们中的一些人有旧的包裹声明,编译器没有抱怨(因为他的原因)
当我使用一种返回类型的方法之一的错误包装'类出现了这个错误。
(类型错误)
解决方案
要解决这个问题,我将包声明更改为正确的声明!
答案 1 :(得分:4)
我在NetBeans 8.0上遇到同样的问题。看来如果你有这个结构:
ClassA
:
public interface ClassA {
}
ClassB
:
import ClassA;
public class ClassB implements ClassA {
}
ClassC
:
import ClassB;
public class ClassC extends ClassB {
}
ClassD
:
import ClassC;
import ClassA;
public class ClassD {
public ClassA getClassA() {
return new ClassC(); // error here
}
}
你收到这个错误:
path\to\ClassC.java:7: error: The type of new ClassC() is erroneous
return new ClassC();
^
因为ClassC
没有显式实现ClassA
,编译器不知道类型是否正确。我通过ClassC
工具ClassA
修复了它,即使它已经扩展ClassB
:
新ClassC
:
import ClassA;
import ClassB;
public class ClassC extends ClassB implements ClassA {
}
答案 2 :(得分:1)
在我的情况下(Netbeans 8.0.2)重启帮助
答案 3 :(得分:1)
再做一次清理并再次构建项目。大多数情况下,这是Netbeans特有的错误。
答案 4 :(得分:0)
您可能需要在Experiment类中导入Result。
我遇到了同样的问题,正是因为这个原因。
答案 5 :(得分:0)
我在Netbeans 7.4上遇到过这个问题。试图重新打开IDE,清理和重建,但没有解决。在我的例子中,erroneuos类有一个implements
子句。我删除了这个子句,再次声明它,因此错误消失了。