2014-03-03 60 views
4

我在Netbeans中遇到了一个奇怪的编译错误。<METHOD_NAME>的类型是错误的

我正在创建一个Experiment对象并在其上调用一个运行方法。

Experiment experiment=new Experiment(); 

    Result result = experiment.run(t, steps, trials, breadth, depth, seed, distribution); 

编译器抱怨

The type of run(Maplayout, int, int , int, int, long, int) is erroneous.

我的方法签名看起来正常:

public Result run(MapLayout t, int steps, int trials, 
         int breadth, int depth, long seed, int distribution) 

我有双重检查我传递的PARAMATERS,他们似乎都正常。如果我通过:

experiment.run(null, 1,1,1,1,1l,1); 

我在run方法上得到相同的编译错误。

我是否缺少明显的东西? Javascript是否损坏了我的大脑?

+2

错误消息和声明之间至少有一个区别:Maplayout vs MapLayout。请你可以发布一个简短的*完整*程序来证明问题? –

+0

你使用netbeans 7.2吗? – lakshman

+0

7.4 .................. –

回答

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 { 
} 
0

您可能需要在实验课导入结果。

我刚刚有同样的问题,这是因为这一点。

6

我有同样的问题,对我而言,解决方案非常简单。

的情况:
我复制/粘贴在一个包我在工作项目的另一个项目了一些类
他们中有些人已经老包的声明和编译器并没有抱怨(他的原因)。
当我使用返回类型的'错误包装'类之一的方法出现此错误。
(的类型是错误的)

解决方案
为了解决问题,我改变了包声明是正确的!

1

在我的情况(8.0.2 Netbeans的)重启有助于

1

只要做到干净,并建立对项目一次。大多数情况下,这是Netbeans特有的错误。

0

我在Netbeans 7.4上遇到了这个问题。试图重新打开IDE,清理和重建,但没有解决。就我而言,erroneuos类有implements条款。我删除了这个条款,再次声明它,所以错误消失了。

相关问题