2013-12-08 3 views
1

У меня возникли проблемы с некоторым кодом Java. Программа состоит из 7 файлов, но я постараюсь, чтобы она была коротка.<identifier> ожидается, arrayList

Я пытаюсь загрузить ArrayList из файла в переменную с ObjectStream. Это дало мне предупреждение, потому что весь компилятор мог видеть, было то, что я сказал, что объект должен быть отправлен в ArrayList. конечно, компилятор не будет знать, какой объект есть в файле. Как кодер я знаю, что файл может состоять только из одного ArrayList и ничего другого. Так что я искал в Интернете, и выяснил, подавить предупреждение, гайка теперь дать мне ошибку:

Schedule.java:34: error: <identifier> expected 

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

import java.util.*; 
import java.io.*; 


public class Schedule 
{ 
    private static ArrayList<Appointment> schedule; 
    private static File file; 

    private static ObjectInputStream objIn; 
    private static boolean exit; 
    private static Scanner in = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     initializeSchedule(); 
     System.out.println("Welcome!"); 
     while(!exit){ 
      System.out.print("write command: "); 
      Menu.next(in.next()); 
     } 
    } 

    public static void initializeSchedule() 
    { 
     try{ 
      file = new File("Schedule.ca"); 
      if(!file.exists()){ 
       schedule = new ArrayList<Appointment>(); 
      } 
      else{ 
       objIn = new ObjectInputStream(new FileInputStream("Schedule.ca")); 
       @SuppressWarnings("unchecked") 
       schedule = (ArrayList<Appointment>)objIn.readObject(); 
       objIn.close(); 
      } 
     } catch (IOException e){ 
      System.out.println("Exception thrown :" + e); 
     } catch (ClassNotFoundException e){ 
       System.out.println("Exception thrown :" + e); 
     } 
    } 

    public static void exit() 
    { 
     exit = true; 
    } 

    public static ArrayList<Appointment> getSchedule() 
    { 
     return schedule; 
    } 

} 

ошибка находится в initializeSchedule, прямо под супрессии, где график устанавливается на вход ObjectStream.

+0

Это будет работать, если вы аннотировать весь метод. –

ответ

1

Вы не можете аннотировать задание. Переместить

@SuppressWarnings("unchecked") 

к линии перед запуском метода.

2

Правильные места для @SuppressWarnings("unchecked") являются

TYPE, FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE

Так что компилятор не может разобрать @SuppressWarnings на данный момент, но считает это заявление. Если вы переместите его выше объявления метода или выше декларации о расписании, это должно быть хорошо.

Лучший способ исправить это на самом деле устранить проблему, что компилятор жалуется, как это:

final Object input = objIn.readObject(); 
if (input instanceof ArrayList) { 
    schedule = (ArrayList<Appointment>) input; 
} else { 
    throw new IllegalStateException(); // or whatever suits you 
} 
Смежные вопросы