Проблема со списком / интерфейсом - PullRequest
0 голосов
/ 19 ноября 2011

Я не могу заставить работать программу из списка контактов. У меня есть 3 класса: основной (), контакт (), список контактов ().

Моя главная проблема в том, что я хочу, чтобы мой main () печатал меню и управлял навигацией. Я испытываю желание написать метод в Contactlist (), но я хочу выполнить эту задачу в main ().

Я создал базовый код скелета, который, я уверен, во многом ошибочен. У меня возникли проблемы с интерфейсом List.

Получение ошибки в ContactList: List<Contact> contacts;

В Contact.java метод getContactBylName также получает ошибку.

Main ()

//Main class for contact list
public class Main {
   public static void main(String[] args) {

   }
}

Контакт ()

import java.util.List;
import java.util.Scanner;

//Class implemented by ContactList
public class Contact implements ContactList {

String fName;
String lName;
String email;
String streetAdd;
String zipCode;

Scanner scan = new Scanner(System.in);

//Constructor
public Contact (String fName, String lName, String email, String streetAdd, String zipCode) {

}

//implementation for adding contact
public void addContact(Contact contact) {
    contacts.add(contact);
}
//implementation for printing contact list
public void printContacts(Contact contact) {

    }

//implementation for getting contact by last name
public void getContactBylName(String lName) {
    System.out.println("Enter a last name to search:");
    lName = scan.nextLine();

    if (ContactList.lName == lName) {
        return Contact;
        }

//implementation for getting contact by email
public void getContactByemail(String email) {
    System.out.println("Enter an email to search:");
    email = scan.nextLine();

    if (ContactList.email == email) {
        return Contact;
        }
}
public void getContactByzipCode(String zipCode) {

}
}

ContactList ()

//Class implementing list Contact
import java.util.List;

public interface ContactList {

 List<Contact> contacts;

 contacts = new ArrayList<Contact>();

 //method to add contact
void addContact(Contact contact);

//method to print contact list
void printContacts(Contact contact);

//method to get a contact by last name
void getContactBylName(String lName);

//method to get a contact by email address
void getContactByemail(String email);

//method to get all contacts in a zip code
void getContactByzipCode(String zipCode);
}

1 Ответ

4 голосов
/ 19 ноября 2011

Это проблема:

public interface ContactList {
    List<Contact> contacts;
    ...
}

Вы не можете объявлять поля (кроме констант) в интерфейсах. Интерфейс - это API - от реализации зависит, хочет ли он сохранить свои данные в List<Contact> или как-то еще.

Кроме того, Contact следует , а не реализовать ContactList - отделить идею "одного контакта" от "коллекции контактов". Ваш интерфейс должен, вероятно, возвращать Contact ссылку из каждого метода "get" тоже ... так что это будет выглядеть примерно так:

public interface ContactList {
    void addContact(Contact contact);    
    void printContacts();    
    Contact getContactByLastName(String lastName);    
    Contact getContactByEmail(String email);
    Contact getContactByZipCode(String zipCode);
}
...