究竟是什么导致了这些“未定义的方法”错误?

时间:2014-03-09 16:00:19

标签: java

我有一个PhoneBook类扩展AbstractCollection<Contact>,其中我覆盖了addsizeiterator方法。在main函数中,我创建了PhoneBook类的新实例,并尝试使用Contact方法向其添加add

显然一切都编译得很好但是我在运行时得到一个异常说:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method add(Contact) is undefined for the type PhoneBook
    The method add(Contact) is undefined for the type PhoneBook
    The method size() is undefined for the type PhoneBook

我不知道为什么会这样,我的搜索没有提供任何有用的信息。导致错误的代码:

public class PhoneBook extends AbstractCollection<Contact> {
    private HashSet<Contact> contacts = new HashSet<>();

    @Override
    public boolean add(Contact newContact) {
        return contacts.add(newContact);
    }

    @Override
    public int size() {
        return contacts.size();
    }

    @Override
    public Iterator<Contact> iterator() {
        return contacts.iterator();
    }
}

public class Application {

    public static void main(String[] args) {
        PhoneBook book = new PhoneBook();

        book.add(new Contact("Marco Polo", "asd@acf.com"));
        book.add(new Contact("Pablo Cablo", "asd@ccf.com"));
        book.size();

        System.out.println(book);
    }

}

我究竟做错了什么?

1 个答案:

答案 0 :(得分:2)

您确定要编译所有文件吗?确保您不会意外地编译其中一个java文件的旧副本或类似的东西。删除所有.class文件并重新编译并检查它们是否存在。