的类型是错误的
我在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损害了我的大脑?
我有同样的问题,解决方案在我的情况下非常简单。
案子:
我从我正在工作的项目的包中复制/粘贴来自另一个项目的一些类。
他们中的一些人有旧包装声明,编译器没有抱怨(因为他的原因)。
当我使用返回类型的方法之一’错误的打包’类时出现此错误。
(类型错误)
解决方案
为了解决这个问题,我将包声明更改为正确的!
我在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 { }
在我的情况下(Netbeans 8.0.2)重启帮助
干净吧,再次建立项目。 大多数情况下,这是Netbeans特有的错误。
您可能需要在Experiment类中导入Result。
我只是遇到了同样的问题,正因为如此。
我在Netbeans 7.4上遇到过这个问题。 试图重新打开IDE,清理和重建,但没有解决。 在我的例子中,erroneuos类上有一个implements
子句。 我删除了这个子句,再次声明它,因此错误消失了。