Я работаю над кодом для класса, и у меня возникают некоторые проблемы, связанные с доступом к полям до их определения.
У меня есть класс, называемый веб-страницей, который состоит из двух строк и интерфейса, представляющегосписок предметов (предметов, которые могут быть на веб-странице).Интерфейс элементов состоит из класса, представляющего список элементов, и класса, представляющего первый элемент в списке и остальную часть списка.Элемент состоит из трех классов, текстового класса, класса изображения и ссылки, которая ссылается на другую веб-страницу.
Вот мой код:
// represents a web page
class WebPage {
String title;
String url;
ILoItems items;
WebPage(String title, String url, ILoItems items) {
this.title = title;
this.url = url;
this.items = items;
}
}
//represents a list of items
interface ILoItems {
}
//represents an empty list of Items
class MtLoItems implements ILoItems {
MtLoItems() {}
}
//represents a construct of a list of items
class ConsLoItems implements ILoItems {
IItem first;
ILoItems rest;
ConsLoItems(IItem first, ILoItems rest) {
this.first = first;
this.rest = rest;
}
}
//represents an item that could go on a web page: one of Text, Image,
//or a Link to another page
interface IItem {
}
class Text implements IItem {
String contents;
Text(String contents) {
this.contents = contents;
}
}
class Image implements IItem {
String fileName;
int size;
String fileType;
Image(String fileName, int size, String fileType) {
this.fileName = fileName;
this.size = size;
this.fileType = fileType;
}
}
class Link implements IItem {
String name;
WebPage page;
Link(String name, WebPage page) {
this.name = name;
this.page = page;
}
}
class ExamplesWebPage {
// examples of Texts
IItem home = new Text("Home sweet Home");
IItem staff = new Text("the staff");
IItem design = new Text("How to Design Programs");
IItem classy = new Text("Stay class, Java");
// examples of Images
IItem lab = new Image("wvh-lab", 400, "png");
IItem profs = new Image("profs", 240, "jpeg");
IItem cover = new Image("htdp", 4300, "tiff");
//examples of links
IItem future = new Link("Back to the Future", this.htdp);
IItem back = new Link("A Look Back", this.htdp);
IItem ahead = new Link("A Look Ahead", this.ood);
//examples of list of items
ILoItems empty = new MtLoItems();
ILoItems htdpItems = new ConsLoItems(this.design,
new ConsLoItems(this.cover,this.empty));
ILoItems oodItems = new ConsLoItems(this.classy,
new ConsLoItems(this.future, this.empty));
ILoItems fundiesItems = new ConsLoItems(this.home,
new ConsLoItems(this.lab,
new ConsLoItems(this.staff,
new ConsLoItems(this.profs,
new ConsLoItems(this.back,
new ConsLoItems(this.ahead, this.empty))))));
//examples of Web Pages
WebPage htdp = new WebPage("HtDP", "htdp.org", this.htdpItems);
WebPage ood = new WebPage("OOD", "ccs.neu.edu/OOD", this.oodItems);
WebPage fundiesWP = new WebPage("Fundies II", "ccs.neu.edu/Fundies2", this.fundiesItems);
}
Когда я запускаю это, мой вывод показывает, что ссылка на веб-страницу при создании ссылки является нулевой;он выдает сообщение, в котором показано, что поле страницы ссылки имеет значение null
Я попытался переключиться вокруг порядка, в котором я создаю примеры, что приводит только к тому, что разные вещи отображаются как нулевые (списоквместо этого поле на веб-страницах имеет значение null или один из элементов списка имеет значение null).
Как я могу исправить эту проблему?Мне нужно выполнить код для этого, но я ничего не могу сделать, если они не созданы правильно.