Пользовательский связанный список - невозможно привести класс объекта к объекту - PullRequest
0 голосов
/ 27 октября 2010

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

Я не могу делать вызовы, как ..

int counter = ((Movie) movieList.get(movListIndex)).getShowList().size();

Где getShowList () - метод в моем Фильмекласс, который возвращает LinkedList.

Eclipse говорит:

Невозможно кастовать из объекта в фильм

Дополнительно

movieList.add(objMovie, counter);

гдеobjMovie - это объект Movie.

Eclipse говорит:

Метод add (Object, int) в типе LinkedList не применим для аргументов (Movie, int)

-Предложением является метод change add для использования в Movie.

Мне нужно иметь возможность хранить LinkedList и Node таким образом, чтобы они могли воспринимать все, что является объектом, что, когда ясоздать класс фильма, который я не могу привести к объекту.

класс связанного списка

public class LinkedList {
 Node head;
 public LinkedList() {
  head = null;
 }

 public boolean isEmpty() {
  return(head==null);
 }

 public int size() {
  int count = 0;
  Node current = head;
  while (current != null) {
   count++;
   current = current.getNext();
  }
  return count;
 }

 public Object get(int index) {
  if ((index < 0) || (index > size()))
   throw new IndexOutOfBoundsException();
  Node current = head;
  int count = 0;
  while (count > 0) {
   count ++;
   current = current.getNext();
  }
  return current.getData();
 }

 public void add (Object data, int index) {
  if ((index < 0) || (index > size())){
   throw new IndexOutOfBoundsException();
  }
  Node previous = null;
  Node current = head;
  while (index > 0) {
   index --;
   previous = current;
   current = current.getNext();
  }

  Node splice = new Node();
  splice.setData(data);
  splice.setNext(current);

  if (previous == null)
   head = splice;
  else
   previous.setNext(splice);
 }

 public Object remove (int index) {
  if ((index < 0) || (index >= size()))
   throw new IndexOutOfBoundsException();
  Node previous = null;
  Node current = head;
  while (index > 0) {
   index --;
   previous = current;
   current = current.getNext();
  }
  if (previous == null)
   head = current.getNext();
  else
   previous.setNext(current.getNext());

  return current.getData();
 }
}

класс узла

public class Node {
 private Object data;
 private Node next;

 public Object getData() {
  return data;
 }
 public Node getNext() {
  return next;
 }
 public void setData(Object data) {
  this.data = data;
 }
 public void setNext(Node next) {
  this.next = next;
 }
}

при необходимости класс фильма

public class Movie{
 private int filmNumber; //Movie ID
 private String filmTitle; //Title of Movie
 private int filmTime; //Movie Runtime
 private String filmRating; //Movie Rating
 private LinkedList showingList = new LinkedList();

 public Movie (int filmNumber, String filmTitle, int filmTime, String filmRating) {
  this.filmNumber = filmNumber; //sets global variable to parameter being passed
  this.filmTitle = filmTitle;   //                    |
  this.filmTime = filmTime;     //                    |
  this.filmRating = filmRating; //                    V
 }

 public int getFilmNumber() {
  return filmNumber; 
 }

 public String getFilmTitle() {
  return filmTitle;
 }

 public int getFilmTime(){
  return filmTime;
 }

 public String getFilmRating() {
  return filmRating;
 }

 public String getStringFilmTime() {
  String runtime = ""; //returned value
  int hours; //variable to hold 2 hour digits
  int minutes; //variable to hold minute digits

  hours = filmTime / 60; //formats original input to just hours
  minutes = filmTime % 60; //formats original input to just minutes

  if (minutes < 10) {
   runtime += ( Integer.toString(hours) + ":0" + Integer.toString(minutes));
   //Mod will only return a single digit if under 10
  }

  if (minutes > 10) {
   runtime += ( Integer.toString(hours) + ":" + Integer.toString(minutes));
   //Same statement without adding a '0'
  }

  return runtime;
 }

 public void setFilmNumber(int newFilmNumber) { 
  filmNumber = newFilmNumber;
 }

 public void setFilmTitle(String newFilmTitle) {
  filmTitle = newFilmTitle;
 }

 public void setFilmTime(int newFilmTime) {
  filmTime = newFilmTime;
 }

 public void setFilmRating(String newFilmRating) {
  filmRating = newFilmRating;
 }

 //public void setShowList()

 public LinkedList getShowList() {
  return showingList;
 }
}

1 Ответ

0 голосов
/ 27 октября 2010

Все эти три класса у вас есть?Я спрашиваю, потому что, если - по какой-то причине - у вас есть класс с именем Object рядом с вашими другими классами, я могу воспроизвести сообщения об ошибках.

Это может быть так просто, как:

public class Object {
}

Если это так, вы никогда не должны называть свои классы Object, String, Integer или что-либо еще, что появляется в пакете java.lang.

...