Проблемы с доступом к полям до их ссылки - PullRequest
0 голосов
/ 28 июня 2019

Я работаю над кодом для класса, и у меня возникают некоторые проблемы, связанные с доступом к полям до их определения.

У меня есть класс, называемый веб-страницей, который состоит из двух строк и интерфейса, представляющегосписок предметов (предметов, которые могут быть на веб-странице).Интерфейс элементов состоит из класса, представляющего список элементов, и класса, представляющего первый элемент в списке и остальную часть списка.Элемент состоит из трех классов, текстового класса, класса изображения и ссылки, которая ссылается на другую веб-страницу.

Вот мой код:

// 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).

Как я могу исправить эту проблему?Мне нужно выполнить код для этого, но я ничего не могу сделать, если они не созданы правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...