В чём заключается ошибка между SETTER/GETTER на JAVA?
Дорогие пользователи! Помогите, пожалуйста, найти ошибку при наследовании классов книги и класса Book. "Идея" подчёркивает мои GETTER и SETTER и говорит о разных типах данных (enum и стринги). Суть задачи в том, чтобы показать, в какой статус книга перейти может, а в какой нет при помощи наследования и оператора switch. Буду Вам благодарен! П.С.: условия задачи я поменять не могу, т.е. это конкретно 4 класса-наследника и супер-класс BookMover. Код прилагаю:
class Main {
public static void main(String[] args) {
Book book = new Book("The Great Gatsby");
BookMover fromArchivedStatusMover = new FromArchievedStatusMover();
fromArchivedStatusMover.moveToStatus(book, Status.AVAILABLE);
System.out.println(book.getStatus());
BookMover fromAvailableStatusMover = new FromAvailableStatusMover();
fromAvailableStatusMover.moveToStatus(book, Status.BORROWED);
System.out.println(book.getStatus());
BookMover fromBorrowedStatusMover = new FromBorrowedStatusMover();
fromBorrowedStatusMover.moveToStatus(book, Status.OVERDUED);
System.out.println(book.getStatus());
BookMover fromOverduedStatusMover = new FromOverduedStatusMover();
fromOverduedStatusMover.moveToStatus(book, Status.AVAILABLE);
System.out.println(book.getStatus());
}
}
public class Book {
protected String title;
protected String status;
public Book(String title) {
this.title = title;
}
public Status getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
public class BookMover {
protected void moveToStatus(Book book, Status requestedStatus) {
System.out.println("Moving status...");
}
}
public class FromArchievedStatusMover extends BookMover {
@Override
protected void moveToStatus(Book book, Status requestedStatus) {
switch (book.status) {
case Status.AVAILABLE:
break;
default:
System.out.println("Перевод книги из статуса 'X' в статус 'Y' невозможен");
break;
}
}
}
public class FromAvailableStatusMover extends BookMover {
@Override
protected void moveToStatus(Book book, Status requestedStatus) {
switch (book.status) {
case Status.BORROWED:
break;
case Status.ARCHIEVED:
break;
default:
System.out.println("Перевод книги из статуса 'X' в статус 'Y' невозможен");
break;
}
}
}
public class FromBorrowedStatusMover extends BookMover {
@Override
protected void moveToStatus(Book book, Status requestedStatus) {
switch (book.status) {
case Status.AVAILABLE:
break;
case Status.OVERDUED:
break;
case Status.ARCHIEVED:
break;
}
}
}
public class FromOverduedStatusMover extends BookMover {
@Override
protected void moveToStatus(Book book, Status requestedStatus) {
switch (book.status) {
case Status.AVAILABLE:
break;
case Status.ARCHIEVED:
break;
default:
System.out.println("Перевод книги из статуса 'X' в статус 'Y' невозможен");
break;
}
}
}
public enum Status {
AVAILABLE,
BORROWED,
ARCHIEVED,
OVERDUED;
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
исправьте
protected String status;
public void setStatus(String status) {
this.status = status;
}
на
protected Status status;
public void setStatus(Status status) {
this.status = status;
}
Вы намешали типы String и Status