2014-11-09 2 views
1

Я пытаюсь вызвать метод showArrayList, но он продолжает давать мне ContactList не может быть преобразован в java.util.ArrayList<Contact>. Что я делаю не так? До сих пор у меня есть это:Попытка вызова метода showArrayList

public class ControlPanel extends JPanel implements ActionListener 
{ 
    // Fields (instance variables/attributes) 
    private JLabel  phoneNumberLabel; // a reference to the phoneNumberLabel that is displayed in the PhoneNumberDisplayPanel. 

    private Contact  nameAndNumber; // Holds the name and number for a phone Contact. 
    // Contact lists; 
    private ContactList contacts;   // Encapsulates a list of saved contacts, ie.e phone Contacts. 
    private ContactList callsMade;   // Encapsulates a list of calls made, i.e. phone Contacts. 

private void findNumber() 
    { 
     if(nameLabel.getText().equals(contacts.searchByName(nameLabel.getText()))) 
      showArrayList(contacts,nameLabel.getText()); 
     else 
      showArrayList(contacts, ""); 
    } 

Метод showArrayList является:

public void showArrayList(ArrayList<Contact> list, String title) 
    { 
     int x = 410; 
     int y = 445; 
     int width = 350; 
     int height = 200; 
     boolean disableCloseButton = false; 
     Window newWindow = new Window(title, x, y, width, height, Color.RED, disableCloseButton); 
     { 
      newWindow.println("No contact information saved"); 
     } 
     else 
     { 
      for (Contact c: list) 
      { 
       newWindow.println(c.toString()); 
      } 
     } 

Теперь я сделал это, и он компилирует:

private void findNumber() 
    { 
     ArrayList<Contact> list = new ArrayList<Contact>(); 
     if(nameLabel.getText().equals(contacts.searchByName(nameLabel.getText()))) 
      showArrayList(list,nameLabel.getText()); 
     else 
      showArrayList(list, ""); 
    } 

Мой ContactList класс:

public class ContactList 
{ 
    private ArrayList<Contact> list; 

    /** 
    * Constructor for a ContactList, to initialize the list from file. 
    * 
    * @param fileName a reference to an existing file 
    * @param window  a reference to an existing window to display the list contacts 
    */ 
    public ContactList(String fileName, Window window) 
    { 
     list = new ArrayList<Contact>(); 

     File file = new File(fileName); 

     // Remark. A file needs to have been written, before it can be read. 
     if (file.exists()) 
     { 
      try 
      { 
       Scanner fileReader = new Scanner(file); 
       readFile(fileReader); 
       window.print(this.toString()); 
      } 
      catch(FileNotFoundException error) // could not find file 
      { 
       System.out.println("File not found "); 
      } 
     } 
    } 

    /******************************************************************** 
    * Searches the list for a particular contact, 
    * comparing this name and number (in lower case) 
    * with the contact name and number (in lower case). 
    * 
    * @param contact 
    * @return returns true if the contact is found, otherwise false 
    */ 
    public boolean found(Contact contact) 
    { 
     for(Contact c: list){ 
      if(c == contact){ 
       return true; 
      } 
     } 
     return false; 

    } 

    /****************************************************************** 
    * Adds one contact to the list 
    * 
    * @param contact 
    */ 
    public void add(Contact contact) 
    { 
     list.add(contact); 


    } 

    /****************************************************************** 
    * searches the list for each name that contains the specified substring 
    * 
    * @param substring 
    * @return returns the result as an ArrayList 
    */ 
    public ArrayList<Contact> searchByName(String substring) 
    { 
     ArrayList<Contact> l = new ArrayList<Contact>(); 
     for(Contact c: list){ 
      if(c.getName() == substring){ 
       l.add(c); 
      } 
     } 
     return l; 
    } 
+0

Покажите нам, где вы заявляете 'контакты' –

+0

Измените его на свой вопрос, а не как комментарий (трудно прочитать как комментарий). 'contacts' является' ContactList', а не 'ArrayList ', поэтому ваш метод не принимает его –

+0

Я пробовал все. Я попробовал свой фактический ArrayList (из моего класса ContactList). Может быть, я должен создать новый ArrayList? – phoenix47

ответ

0

ContactList не расширяет ArrayList<Contact>, поэтому вы не можете передать его в качестве аргумента в свой метод, который ожидает ArrayList<Contact>. Возможно, у вас может быть getter в ContactList, чтобы разоблачить list, чтобы вы могли передать это на ваш метод showArrayList, или вы можете реализовать метод showArrayList, который использует код ContactList, набранный argument.

0
private void findNumber() 
    { 
     if(nameLabel.getText().equals(contacts.searchByName(nameLabel.getText()))) 
      showArrayList(contacts.searchByName(""),nameLabel.getText()); 
     else 
      showArrayList(contacts.searchByName(""), ""); 
    } 
Смежные вопросы