SOS, люди добрые)
Код рабочий, валидатор ругается:
Метод getBook в классе MarkTwainBook должен иметь тип возвращаемого значения MarkTwainBook и возвращать текущий объект.
public class Solution {
public static void main(String[] args) {
List<Book> books = new LinkedList<Book>();
books.add(new MarkTwainBook("Tom Sawyer"));
books.add(new AgathaChristieBook("Hercule Poirot"));
System.out.println(books);
}
abstract static class Book {
private String author;
public Book(String author) {
this.author = author;
}
public abstract Book getBook();
public abstract String getTitle();
private String getOutputByBookType() {
String agathaChristieOutput = author + ": " + getBook().getTitle() + " is a detective";
String markTwainOutput = getBook().getTitle() + " was written by " + author;
String output = "output";
if(this instanceof MarkTwainBook) output = markTwainOutput;//Add your code here
if(this instanceof AgathaChristieBook) output = agathaChristieOutput;//Add your code here
return output;
}
public String toString() {
return getOutputByBookType();
}
}
public static class MarkTwainBook extends Book {
public String title;
public MarkTwainBook(String author) {
super("Mark Twain");
this.title = author;
}
@Override
public Book getBook() {
return (MarkTwainBook) this;
}
@Override
public String getTitle() {
return title;
}
}
public static class AgathaChristieBook extends Book {
public String title;
public AgathaChristieBook(String author) {
super("Agatha Christie");
this.title = author;
}
@Override
public Book getBook() {
return (AgathaChristieBook) this;
}
@Override
public String getTitle() {
return title;
}
}
}