Несоответствие типа массива ArrayList

Я пытаюсь (для школьной лаборатории) создать программу, которая на данный момент будет просто отображать элементы в массиве (мы используем JGrasp в качестве нашей IDE, это обязательная часть, так как она требует проектов, которые она делает). Для этого требуется пять классов: суперкласс для сотрудников, два подкласса, определяющих типы сотрудников, метод тестирования (UseCompany) и класс FileIO.

import java.util.*;

public class UseCompany {
    public static void main(String[] args) {
        System.out.print("Hello");
        SalesMan man1 = new SalesMan("John Doe", 12345);
        Technician tech1 = new Technician("Jane Doe", 12346);
        ArrayList<Employee> company = new ArrayList<Employee>();
        company.add(man1);
        company.add(tech1);
        SalesMan man2 = new SalesMan(1500.00, "Steelport", "Johnny Gat", 14432);
        Technician tech2 = new Technician(5, "IT Support", "Kinzie Kensington", 10000);
        company.add(man2);
        company.add(tech2);
        Collections.sort(company);
        ArrayList<Employee> temp = company;
        FileIO.displayArray(temp); //Line 19, the problem point.
    }
}

Это метод тестирования, и это

public static void displayArray(ArrayList<Employee> list) //Displays array one line at a time
{                                                            //Specialized for Employee class
  for (int i=0;i<list.size();i++)
  {
     if((list.get(i)).getType() == 'T')
     {
        System.out.println("Name: " + (list.get(i)).getName() + "\tNo.: " + (list.get(i)).getNumber() + "\tType: Technician\tDepartment: " + ((Technician)(list.get(i))).getDepartment() + "\tClearance Level: " + ((Technician)(list.get(i))).getLevel());
     }
     else if((list.get(i)).getType() == 'S')
     {
        System.out.println("Name: " + (list.get(i)).getName() + "\tNo.: " + (list.get(i)).getNumber() + "\tType: Salesperson\tTerritory: " + ((SalesMan)(list.get(i))).getTerritory() + "\tTarget: " +((SalesMan)(list.get(i))).formattedTarget());
     }
  }
}

Это метод в FileIO, который должен отображать строки.

У меня проблема в том, что пока компилируется нормально, выдает ошибку

UseCompany.java:19: ошибка: несовместимые типы: список нельзя преобразовать в ArrayList[]

Когда я пытаюсь запустить его в jgrasp, указывая на (temp). Мы с учителем оба разобрались в этом и ничего не могли с этим поделать (он добавил временный материал).

Однако, если я запускаю его в командной строке, используя летучие мыши, которые я сделал для компиляции и запуска, он работает просто отлично! Может ли кто-нибудь дать какие-либо советы о том, почему я получаю эту ошибку в JGrasp и, возможно, как ее исправить, чтобы я мог продолжить работу над ней?

/**
* This is the superclass Employee.
* It contains the general information for SalesMan and Technician
*/
import java.io.*;

public class Employee implements Comparable, Serializable
{
private String name;            // Name of employee
private int number;         // Employee number of employee
char typeCode;   // What kind of employee is it

/**
* Constructor  to create the superclass
* @param nom Name of the employee
* @param number Employee number
*/
public Employee(String nom, int number )
{
    name = nom;
    this.number = number;
}

public char getType()
{
   return typeCode;
}

public int getNumber()
{
   return number;
}

public String getName()
{
   return name;
}

/**
* compareTo method for comparison of objects
* @param Employee object
* @return An integer to indicate comparison  
*/
public int compareTo(Object o)
{
    //Compare code
    return name.compareTo(((Employee)o).name);
}

/** toString method for printing */
public String toString()
{
  String employeeNum = Integer.toString(number);
  String str = new String("Name: " + name + "\nEmployee Number: " + employeeNum);
    return str;
}
}

Для информации: техник добавляет частный уровень int, отдел частных строк, геттеры и toString. Продавец добавляет частную двойную цель, территорию частных строк, геттеры и toString.

Изменить: по какой-то причине, даже после удаления всех аргументов как из вызова, так и из реализации метода displayArray и комментирования всего его содержимого, кажется, требуются данные типа ArrayList[], указывая на ошибку в точка между FileIO и displayArray()

ПОСЛЕДНЯЯ РЕДАКЦИЯ: Спасибо, Филдор. Как оказалось, удаление файла проекта и его переделка были, по сути, решением. Теперь все работает нормально. Я бы хотел, чтобы я или мой учитель поняли это прошлой ночью в лаборатории...


person Kaerea    schedule 13.11.2014    source источник
comment
хотя компилируется нормально, выдает ошибку Это утверждение противоречиво.   -  person Sotirios Delimanolis    schedule 13.11.2014
comment
Не могли бы вы отметить строку 19 в UseCompany, пожалуйста?   -  person Fildor    schedule 13.11.2014
comment
Значит, jgrasp считает, что это ошибка, а javac — нет?   -  person Teepeemm    schedule 13.11.2014
comment
@Teepeemm: В принципе, так оно и есть.   -  person Kaerea    schedule 13.11.2014
comment
Вы случайно не знаете, что JDK jGrasp использует для компиляции?   -  person Fildor    schedule 13.11.2014
comment
Почему вы конвертируете arraylist в массив, когда вы можете просто использовать список напрямую?   -  person Tetramputechture    schedule 13.11.2014
comment
@SotiriosDelimanolis: я знаю, что это противоречиво, это часть путаницы. IDE компилирует его без ошибок, но во время выполнения выдает показанную ошибку.   -  person Kaerea    schedule 13.11.2014
comment
Хорошо, просто для ясности. Компиляция в CMD: Проверить. Запуск на CMD: Проверить. Компиляция в jGrasp: Проверить. БЕГ в jGrasp: НЕУДАЧА - Верно?   -  person Fildor    schedule 13.11.2014
comment
@Fildor: Вот и все, да.   -  person Kaerea    schedule 13.11.2014
comment
@Tetramputechture: мне гораздо удобнее работать с массивами, чем с ArrayLists. Я еще студент, и это мой первый курс по java.   -  person Kaerea    schedule 13.11.2014
comment
Они могут функционировать одинаково. Вы действительно должны взглянуть на API в ArrayLists. docs.oracle.com/javase/1.5. 0/docs/api/java/util/ArrayList.html Вы можете обращаться к каждому индексу в ArrayList так же, как к массиву с помощью ArrayList.get(index)   -  person Christopher Schneider    schedule 13.11.2014
comment
Я могу только догадываться. Но я подозреваю, что jGrasps JRE ... Может быть, попробуйте закомментировать все строки внутри displayArray и повторить попытку. Говорит ли трассировка стека больше, чем просто строка UseCompany 19?   -  person Fildor    schedule 13.11.2014
comment
@ChristopherSchneider: Хорошо, я изменил его, думаю, не помешает понять, что я делаю с некоторыми из наиболее полезных функций Java. Однако никаких изменений.   -  person Kaerea    schedule 13.11.2014
comment
@Fildor: я прокомментировал все внутри displayArray, и это дает ту же ошибку. Может быть, проблема в том, как displayArray вызывает ArrayList???   -  person Kaerea    schedule 13.11.2014
comment
Я не знаю jGrasp, но вы можете как-то пересобрать весь проект и очистить кеши или что-то в этом роде. Я подозреваю, что здесь используется старая версия этого класса.   -  person Fildor    schedule 13.11.2014


Ответы (2)


Ответ вместо комментариев:

Кажется, что jGrasp использует некоторые устаревшие файлы классов во время выполнения. Из-за незнания этой IDE я не могу сказать как, но предлагаю полную очистку скомпилированных классов.

Я также предлагаю вам написать свой собственный ответ, описав, что вы сделали, чтобы устранить эту ошибку, и принять ее.

person Fildor    schedule 13.11.2014

Ответ на этот вопрос, в частности, заключался в том, что в JGrasp нужно удалить связанный файл .gpj, а затем переделать его, используя тот же файл. Он должен содержать обновленные версии файлов без дальнейших ошибок. Еще раз спасибо, Филдор, за предложение этого ответа.

person Kaerea    schedule 27.11.2014