<method_name>的类型是错误的</method_name>

时间:2014-03-03 08:44:07

标签: java netbeans

我在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损害了我的大脑吗?

6 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,在我的案例中,解决方案非常简单。

案件:
我在我正在工作的项目的包中复制/粘贴来自另一个项目的一些类 他们中的一些人有旧的包裹声明,编译器没有抱怨(因为他的原因) 当我使用一种返回类型的方法之一的错误包装&#39;类出现了这个错误。
(类型错误)

解决方案
  要解决这个问题,我将包声明更改为正确的声明!

答案 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子句。我删除了这个子句,再次声明它,因此错误消失了。