2013-04-10 192 views
-1

我有一個我想實現的接口,看起來像這樣,但有更多的方法。只是有一個在這裏例如:實現一個java接口

public interface List{ 

public void add(int position, Album album); 

} 

然後我的類,它實現它開始這樣的,包括所有的接口中存在的方法:

public class SongList implements List{ 

public void add(int position, Album album){ 
...my code for this method 
} 

我的編譯器告訴我兩個錯誤。第一種 - 編譯我的列表界面時 - 說,該接口列表找不到我的歌曲類:

List.java:23: error: cannot find symbol 
public void add(int position, Song item); 
          ^
symbol: class Song 
location: interface List 
1 error 

我有一首歌類,編譯,並在同一文件夾作爲接口和我所有的其他java文件。
二 - 編譯的SongList時 - 編譯器說,我還沒有覆蓋的add()方法:

SongList is not abstract and does not override abstract method add(int,Object) in List 
public class SongList implements List{ 
    ^
1 error 

我敢在這裏輸了...至於我用Google搜索我下面所有的界面的規則,但顯然不是。任何想法我做錯了什麼?

+3

似乎你在這裏發佈的代碼不是你正在編譯的代碼。 – 2013-04-10 03:05:53

+2

你能發佈完整的代碼嗎 – PSR 2013-04-10 03:06:24

+0

你使用了宋類嗎?在你的界面中的任何地方 – PSR 2013-04-10 03:06:51

回答

1

第一個和第二個代碼塊指示add方法期待Album,但第三個和第四個代碼塊表明您已經實現了帶Song參數的add方法。要麼接口需要一個需要歌曲的添加方法,否則你的類需要實現一個需要相冊的添加方法 - 這些方法需要相同的參數。

+0

謝謝,那肯定是問題所在。我做了太多的擺弄,我很驚訝,我沒有更多的這樣的錯配。它現在編譯雖然:D – Ubunfu 2013-04-10 23:03:54

0

對於第一個問題,顯然編譯器在查找Song.class時遇到了問題。如果Song.java位於同一個目錄中,請確保它已被編譯。

對於第二個問題,實現一個接口意味着你有來實現它的每個方法。這意味着你需要編寫一個完全相同的方法簽名的方法 - 其中包括參數。

雖然這一次,由於您沒有在界面中包含所有的方法,我只是假設它們都已經實現。在這種情況下,它看起來像R.daneel.olivaw是正確的,你可能會使用錯誤的列表。確保簽名匹配,並且正在使用您的List版本。如上所述,這意味着它必須被編譯並位於java的classpath(或者在同一個目錄中)。

編輯:本來誤解問題的第二部分,這個答案已經相應更新了。

1

我認爲你正在導入錯誤的List接口。

請檢查您的List接口是否在導入語句中提及,並且沒有其他List接口被導入爲錯誤語句說明..

加(INT,對象)

,而不是

加(INT,相冊)

我認爲你是不小心實現Java列表界面

我希望這有幫助..