2013-02-27 185 views
0

當嘗試編譯,我的代碼無法編譯:Java - 找不到構造函數?

package ch02.genericStringLogs; 

public class DemoGenericLogs { 
    public static void main(String[] args) { 
    GenericLogInterface<Float> genFloatLog = new LinkedGenericLog<Float>(); 
    LLGenericNode<Float> node0 = new LLGenericNode<Float>(2.2); 
    LLGenericNode<Float> node1 = new LLGenericNode<Float>(3.3); 
    LLGenericNode<Float> node2 = new LLGenericNode<Float>(4.4); 
    LLGenericNode<Float> node3 = new LLGenericNode<Float>(5.5); 
    genFloatLog.insert(node0); 
    genFloatLog.insert(node1); 
    genFloatLog.insert(node2); 
    genFloatLog.insert(node3); 

    System.out.println(genFloatLog.size()); 
    System.out.println(genFloatLog.toString()); 
    genFloatLog.clear(); 
    System.out.println(genFloatLog.size()); 

    GenericLogInterface<String> genStringLog = new LinkedGenericLog<String>(); 
    LLGenericNode<String> string0 = new LLGenericNode<String>("one"); 
    LLGenericNode<String> string1 = new LLGenericNode<String>("two"); 
    LLGenericNode<String> string2 = new LLGenericNode<String>("three"); 
    LLGenericNode<String> string3 = new LLGenericNode<String>("four"); 

    System.out.println(genStringLog.size()); 
    System.out.println(genStringLog.toString()); 
    genStringLog.clear(); 
    System.out.println(genStringLog.size()); 
    } 
} 

我得到這個錯誤:

Error: 
    part1/ch02/genericStringLogs/DemoGenericLogs.java:5: cannot find symbol 
    symbol : constructor LinkedGenericLog() 
    location: class ch02.genericStringLogs.LinkedGenericLog<java.lang.Float> 
+5

正如它所說的:無法找到「LinkedGenericLog」類的無參構造函數...並且由於您沒有顯示該類,所以很難說更多...... – assylias 2013-02-27 22:44:09

+0

您的'LinkedGenericLog'在同一個包裏有什麼課? – 2013-02-27 22:45:30

+0

是的。它是在這裏列出的相同的文件http://stackoverflow.com/questions/15122613/java-compile-time-error-compiler-not-recognizing-method-override – user1696035 2013-02-27 22:56:36

回答

1

這條線......

GenericLogInterface<String> genStringLog = new LinkedGenericLog<String>(); 

表明您正在嘗試調用一個無參數的構造函數。

您的LinkedGenericLog類必須沒有無參構造函數,如果您收到該錯誤。 Java provides one by default,除非你定義了其他具有參數的構造函數。

+1

或者無法訪問。 – assylias 2013-02-27 22:46:30

3

假設它是相同的類作爲一個在你的earlier question,爲LinkedGenericLog<T>唯一的構造是這樣的一個:

public LinkedGenericLog(String name) 

所以,當你構建一個,你需要一個名字來傳遞。例如:

GenericLogInterface<Float> genFloatLog = new LinkedGenericLog<Float>("Some name"); 

如果你不希望有一個名字來傳遞,你需要改變LinkedGenericLog - 增加一個參數的構造函數。在那種情況下,你想要日誌有什麼名字?

+0

確定我已經把它命名爲LinkedGenericLog (「節點」) 但現在我得到以下行的錯誤 的java:6:找不到符號 符號:構造LLGenericNode(雙) 位置:類ch02.genericStringLogs.LLGenericNode < java.lang.Float> – user1696035 2013-02-27 22:58:22

+0

同樣的事情。您需要一個LLGenericNode的構造函數,它需要一個double作爲參數。 – 2013-02-27 23:03:53

+0

好的,但雙從哪裏來? – user1696035 2013-02-27 23:09:17