2014-03-03 59 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條款。我刪除了這個條款,再次聲明它,所以錯誤消失了。

相關問題