2013-04-10 165 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列表界面

我希望这有帮助..