0

所以我问了一个与此类似的问题,但我不认为我得到的答案与我试图做的事情有关。

说我有这门课:

Java 代码

public class Section
{
    private String sDocumentTitle;
    private String sHeadingTitle;
    private String sText;
    public ArrayList<Section> aSiblingSection = new ArrayList<Section>();
    public ArrayList<Section> aChildSection = new ArrayList<Section>();
    public ArrayList<image> aImages = new ArrayList<image>();

    public void setName(String docTitle)
    {
        //set passed parameter as name
        sDocumentTitle = docTitle;
    }

    public void addName (String docTitle)
    {
        //adds remaining Title String together
        sDocumentTitle += (" " + docTitle);
    }

    public String getName()
    {
        //return the set name
        return sDocumentTitle;
    }

    public void setSection(String section)
    {
        //set passed parameter as name
        sHeadingTitle = section;
    }

    public void addSection(String section)
    {
        //adds section parts together
        sHeadingTitle += ("" + section);
    }

    public String getSection()
    {
        //return the set name
        return sHeadingTitle;
    }
    public void setText(String text)
    {
        //set passed parameter as name
        sText = text;
    }

    public void addText(String text)
    {
        //adds 
        sText += (" " + text);
    }

    public String getText()
    {
        //return the set name
        return sText;
    }
    public ArrayList getChildSection()
    {
        return aChildSection;
    }
}  

并且在驱动程序类中以这种方式初始化的子部分......

Section aSection = new Section();
aMainSection.get(0).aChildSection.add(aSection);

本质上,有人可以告诉我如何在节类中添加一个方法,该方法从“aChildSection”的数组列表中返回父级吗?

4

3 回答 3

3

添加构造函数

private final Section parent;
public Section(Section parent) {
    this.parent = parent;
}

public Section getParent() {
    return parent;
}

添加孩子时

Section aSection = new Section(aMainSection.get(0));
aMainSection.get(0).aChildSection.add(aSection);
于 2011-07-11T15:02:23.567 回答
2

用你的模型,你不能。添加父部分:

private Section parent;

并为每个子会话设置它(在父会话中它将为空)

于 2011-07-11T15:03:24.163 回答
2

我猜,每个部分(主要部分除外)都有一个父级。诀窍是,一个部分需要知道它的父部分。

一种广泛使用的模式是使用构造函数设置父级并向构造函数添加一些逻辑,以便它会自动将部分注册为父级的子级:

public Section(Section parent) {
  this.parent = parent;   // remember your parent
  parent.addChild(this);  // register yourself as your parent's child
}

然后使用此代码添加一个部分:

Section mainSection = aMainSection.get(0);   // ugly!!
Section section = new Section(mainSection);

重构技巧- 将所有字段声明为私有并实现 getter。如果这些 getter 不返回内部列表而只返回列表中的值,那就更好了。

于 2011-07-11T15:12:48.717 回答