用ant编译错误

时间:2014-03-13 13:07:08

标签: java ant

我很难理解出了什么问题。从这开始,我有一个像这样的界面...

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。不确定,如果这是蚂蚁或我的代码的一些问题。请建议..

2 个答案:

答案 0 :(得分:-1)

您不需要界面中的abstract修饰符,而且我有预感,这是导致您出现问题的原因。使用抽象方法的唯一地方是抽象类。

修改

我认为界面最近可能已经改变并且在一个单独的jar中。

它可能用于返回Vector,但现在您看到的源会返回一个List。

我怀疑你正在编译一个旧版本的jar(getRecordsVector()仍然返回Vector)你的类路径。

答案 1 :(得分:-1)

您使用的是哪个版本的Java?我在IntelliJ IDEA中运行Java7并且它没有抱怨代码 - 它实际上已编译,如果我在其中放置主方法,我可以运行。

我同意@ NickJ的评论 - 接口方法本质上是抽象的 - 因为你必须在实现接口的类中实现它们。 See this posting for more information.