我很难理解出了什么问题。从这开始,我有一个像这样的界面...
public interface UserRecordsInterface
{
public abstract List getRecordsVector()
throws UserExitException;
}
我想在我的MyRecordsClass.java类中实现这个接口,就像这样......
public class MyRecordsClass implements UserRecordsInterface{
private List addendaRecs = null;
/**
* Return the list of addenda records
*
* @return List
*/
public List getRecordsVector() {
return addendaRecs;
}
}
使用ant编译时,我遇到了2个错误..
1 Class MyRecordsClass is not abstract and does not override the abstract method getRecordsVector() in UserRecordInterface.
2 getRecordsVector() in MyRecordsClass cannot implement getRecordsVector() in UserRecordsInterface; attempting to use incompatible return type.
- [javac] found : java.util.List
- [javac] required: java.util.Vector
- [javac] public List getRecordsVector() {
最初,方法getRecordsVector()
在接口中返回了Vector类型。现在,它被改为List。所以,我在课堂上做了相应的改变。现在,它给出了这个错误。如果我将我的班级改为Vector&编译,然后它的工作正常。但是我想使用List,因为那是当前接口所具有的。所以,我相信ant仍然指向具有矢量接口的旧lib。不确定,如果这是蚂蚁或我的代码的一些问题。请建议..
答案 0 :(得分:-1)
您不需要界面中的abstract
修饰符,而且我有预感,这是导致您出现问题的原因。使用抽象方法的唯一地方是抽象类。
修改
我认为界面最近可能已经改变并且在一个单独的jar中。
它可能用于返回Vector,但现在您看到的源会返回一个List。
我怀疑你正在编译一个旧版本的jar(getRecordsVector()
仍然返回Vector
)你的类路径。
答案 1 :(得分:-1)
您使用的是哪个版本的Java?我在IntelliJ IDEA中运行Java7并且它没有抱怨代码 - 它实际上已编译,如果我在其中放置主方法,我可以运行。
我同意@ NickJ的评论 - 接口方法本质上是抽象的 - 因为你必须在实现接口的类中实现它们。 See this posting for more information.